The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Именнованые семафоры в FreeBSD 5.3, !*! mig, 22-Сен-05, 00:57  [смотреть все]
Был протестирован следующий код :

#define SEM_NAME "sem.sem"

int main(void)
{
  sem_t sema;
  sema=sem_open(SEM_NAME,O_RDWR|O_CREAT,S_IWUSR|S_IRGRP|S_IROTH,1);
...
  sem_close(sema);
  sem_unlink(SEM_NAME);
return 0;
}

Реализация Posix. Компилится на ура. Но вот на вызове sem_open() вылетает segmentation fault. В чем же может быть дело?

  • Именнованые семафоры в FreeBSD 5.3, !*! sas, 01:24 , 22-Сен-05 (1)
    >Был протестирован следующий код :
    >
    >#define SEM_NAME "sem.sem"
    >
    >int main(void)
    >{
    >  sem_t sema;
    >  sema=sem_open(SEM_NAME,O_RDWR|O_CREAT,S_IWUSR|S_IRGRP|S_IROTH,1);
    >...
    >  sem_close(sema);
    >  sem_unlink(SEM_NAME);
    >return 0;
    >}
    >
    >Реализация Posix. Компилится на ура. Но вот на вызове sem_open() вылетает segmentation
    >fault. В чем же может быть дело?


    sem_t *sem
    Читайте внимательно man
    Kstati i kompilirovat' sovetuju vsegda s -Wall kak minimum. V etom sluchae kompiljator sam vam skazhet gde potencial'naja problema.

    Uspehov
    --- sas

    • Именнованые семафоры в FreeBSD 5.3, !*! mig, 02:04 , 22-Сен-05 (2)
      >>Был протестирован следующий код :
      >>
      >>#define SEM_NAME "sem.sem"
      >>
      >>int main(void)
      >>{
      >>  sem_t sema;
      >>  sema=sem_open(SEM_NAME,O_RDWR|O_CREAT,S_IWUSR|S_IRGRP|S_IROTH,1);
      >>...
      >>  sem_close(sema);
      >>  sem_unlink(SEM_NAME);
      >>return 0;
      >>}
      >>
      >>Реализация Posix. Компилится на ура. Но вот на вызове sem_open() вылетает segmentation
      >>fault. В чем же может быть дело?
      >
      >
      >sem_t *sem
      >Читайте внимательно man
      >Kstati i kompilirovat' sovetuju vsegda s -Wall kak minimum. V etom sluchae
      >kompiljator sam vam skazhet gde potencial'naja problema.
      >
      >Uspehov
      >--- sas


      Извиняюсь - описка вышла у меня sem_t* sema; иначе бы и скомпилить не дало бы.

      • Именнованые семафоры в FreeBSD 5.3, !*! sas, 06:41 , 22-Сен-05 (3)
        >>>Был протестирован следующий код :
        >>>
        >>>#define SEM_NAME "sem.sem"
        >>>
        >>>int main(void)
        >>>{
        >>>  sem_t sema;
        >>>  sema=sem_open(SEM_NAME,O_RDWR|O_CREAT,S_IWUSR|S_IRGRP|S_IROTH,1);
        >>>...
        >>>  sem_close(sema);
        >>>  sem_unlink(SEM_NAME);
        >>>return 0;
        >>>}
        >>>
        >>>Реализация Posix. Компилится на ура. Но вот на вызове sem_open() вылетает segmentation
        >>>fault. В чем же может быть дело?
        >>
        >>
        >>sem_t *sem
        >>Читайте внимательно man
        >>Kstati i kompilirovat' sovetuju vsegda s -Wall kak minimum. V etom sluchae
        >>kompiljator sam vam skazhet gde potencial'naja problema.
        >>
        >>Uspehov
        >>--- sas
        >
        >
        >Извиняюсь - описка вышла у меня sem_t* sema; иначе бы и скомпилить
        >не дало бы.

        Nu togda sleduyschii sovet: Vsegda ispol'zujte proverki:

        sema=sem_open(...);
            if ( (sem_t*)SEM_FAILED == sema )
            perror( "sem_open ERROR:" );

        Krome togo naskol'ko ya pomnju imja semaphora vsegda dolzhno nachinat'sja s '/'

        "/sem.sem" or better "/tmp/sem.sem"

        Udachi
        --- sas

        • Именнованые семафоры в FreeBSD 5.3, !*! mig, 10:09 , 22-Сен-05 (4)
          >>>>Был протестирован следующий код :
          >>>>
          >>>>#define SEM_NAME "sem.sem"
          >>>>
          >>>>int main(void)
          >>>>{
          >>>>  sem_t sema;
          >>>>  sema=sem_open(SEM_NAME,O_RDWR|O_CREAT,S_IWUSR|S_IRGRP|S_IROTH,1);
          >>>>...
          >>>>  sem_close(sema);
          >>>>  sem_unlink(SEM_NAME);
          >>>>return 0;
          >>>>}
          >>>>
          >>>>Реализация Posix. Компилится на ура. Но вот на вызове sem_open() вылетает segmentation
          >>>>fault. В чем же может быть дело?
          >>>
          >>>
          >>>sem_t *sem
          >>>Читайте внимательно man
          >>>Kstati i kompilirovat' sovetuju vsegda s -Wall kak minimum. V etom sluchae
          >>>kompiljator sam vam skazhet gde potencial'naja problema.
          >>>
          >>>Uspehov
          >>>--- sas
          >>
          >>
          >>Извиняюсь - описка вышла у меня sem_t* sema; иначе бы и скомпилить
          >>не дало бы.
          >
          >Nu togda sleduyschii sovet: Vsegda ispol'zujte proverki:
          >
          >sema=sem_open(...);
          > if ( (sem_t*)SEM_FAILED == sema )
          > perror( "sem_open ERROR:" );
          >
          >Krome togo naskol'ko ya pomnju imja semaphora vsegda dolzhno nachinat'sja s '/'
          >
          >
          >"/sem.sem" or better "/tmp/sem.sem"
          >
          >Udachi
          >--- sas

          и этот вариант я рассматривал со "/" - а именно "/tmp/sem" - одна фигня.

          • Именнованые семафоры в FreeBSD 5.3, !*! sas, 10:22 , 22-Сен-05 (5)
            >>>>>Был протестирован следующий код :
            >>>>>
            >>>>>#define SEM_NAME "sem.sem"
            >>>>>
            >>>>>int main(void)
            >>>>>{
            >>>>>  sem_t sema;
            >>>>>  sema=sem_open(SEM_NAME,O_RDWR|O_CREAT,S_IWUSR|S_IRGRP|S_IROTH,1);
            >>>>>...
            >>>>>  sem_close(sema);
            >>>>>  sem_unlink(SEM_NAME);
            >>>>>return 0;
            >>>>>}
            >>>>>
            >>>>>Реализация Posix. Компилится на ура. Но вот на вызове sem_open() вылетает segmentation
            >>>>>fault. В чем же может быть дело?
            >>>>
            >>>>
            >>>>sem_t *sem
            >>>>Читайте внимательно man
            >>>>Kstati i kompilirovat' sovetuju vsegda s -Wall kak minimum. V etom sluchae
            >>>>kompiljator sam vam skazhet gde potencial'naja problema.
            >>>>
            >>>>Uspehov
            >>>>--- sas
            >>>
            >>>
            >>>Извиняюсь - описка вышла у меня sem_t* sema; иначе бы и скомпилить
            >>>не дало бы.
            >>
            >>Nu togda sleduyschii sovet: Vsegda ispol'zujte proverki:
            >>
            >>sema=sem_open(...);
            >> if ( (sem_t*)SEM_FAILED == sema )
            >> perror( "sem_open ERROR:" );
            >>
            >>Krome togo naskol'ko ya pomnju imja semaphora vsegda dolzhno nachinat'sja s '/'
            >>
            >>
            >>"/sem.sem" or better "/tmp/sem.sem"
            >>
            >>Udachi
            >>--- sas
            >
            >и этот вариант я рассматривал со "/" - а именно "/tmp/sem" -
            >одна фигня.


            A proverochka to est'?

            Udachi
            --- sas

        • Именнованые семафоры в FreeBSD 5.3, !*! chip, 10:39 , 22-Сен-05 (6)
          >Krome togo naskol'ko ya pomnju imja semaphora vsegda dolzhno nachinat'sja s '/'
          >
          >
          >"/sem.sem" or better "/tmp/sem.sem"

          На правах добавления.

          Вопрошавшему man 3 sem_open, раздел BUGS:

          This implementation places strict requirements on the value of name: it
          must begin with a slash (`/'), contain no other slash characters, and be
          less than 14 characters in length not including the terminating null
          character.

          • Именнованые семафоры в FreeBSD 5.3, !*! mig, 10:56 , 22-Сен-05 (7)
            >>Krome togo naskol'ko ya pomnju imja semaphora vsegda dolzhno nachinat'sja s '/'
            >>
            >>
            >>"/sem.sem" or better "/tmp/sem.sem"
            >
            >На правах добавления.
            >
            >Вопрошавшему man 3 sem_open, раздел BUGS:
            >
            >This implementation places strict requirements on the value of name: it
            >must begin with a slash (`/'), contain no other slash characters, and
            >be
            >less than 14 characters in length not including the terminating null
            >character.

            Если я правильно помню - то есть реализация функции px_ipc_name или очень похоже на это - на вскидку точно не скажу,не помню ;) так вот я ее использовал - она как раз и добавляет и проверяет наличие "/" в начале имени. Так что проблема совсем не в этом - требования относительно имени были соблюдены.

          • Именнованые семафоры в FreeBSD 5.3, !*! sas, 11:05 , 22-Сен-05 (8)
            >>Krome togo naskol'ko ya pomnju imja semaphora vsegda dolzhno nachinat'sja s '/'
            >>
            >>
            >>"/sem.sem" or better "/tmp/sem.sem"
            >
            >На правах добавления.
            >
            >Вопрошавшему man 3 sem_open, раздел BUGS:
            >
            >This implementation places strict requirements on the value of name: it
            >must begin with a slash (`/'), contain no other slash characters, and
            >be
            >less than 14 characters in length not including the terminating null
            >character.


            Intertesno. A kakja u Vas sistema?

            On Fedora 3 64bit Heidelberg:
            ====================
                   The name argument points to a string naming a semaphore object.  It is
                   unspecified whether the name appears in the file system and is visible
                   to functions that take pathnames as arguments.  The name argument con-
                   forms to the construction rules for a pathname. If  name  begins  with
                   the  slash  character, then processes calling sem_open() with the same
                   value of name shall refer to the same semaphore  object,  as  long  as
                   that  name has not been removed. If name does not begin with the slash
                   character, the effect is implementation-defined. The interpretation of
                   slash  characters  other  than  the leading slash character in name is
                   implementation-defined.
                                                                                            
            On MAC OS X  1.4.2
            ==================
            nothing specific about name even nothing about '/'  :(

            ~~~~~~~~~~~~~~~~~~~~~~~~~~~
            I think that the problem is because for some reason sem_open fails and all operations with resulted sema pointer after this are causing segmentation fault. perror should help to understand what is causing that.

            Good luck
            --- sas

            • Именнованые семафоры в FreeBSD 5.3, !*! mig, 11:19 , 22-Сен-05 (9)
              >>>Krome togo naskol'ko ya pomnju imja semaphora vsegda dolzhno nachinat'sja s '/'
              >>>
              >>>
              >>>"/sem.sem" or better "/tmp/sem.sem"
              >>
              >>На правах добавления.
              >>
              >>Вопрошавшему man 3 sem_open, раздел BUGS:
              >>
              >>This implementation places strict requirements on the value of name: it
              >>must begin with a slash (`/'), contain no other slash characters, and
              >>be
              >>less than 14 characters in length not including the terminating null
              >>character.
              >
              >
              >Intertesno. A kakja u Vas sistema?
              >
              >On Fedora 3 64bit Heidelberg:
              >====================
              >       The name argument points to
              >a string naming a semaphore object.  It is
              >       unspecified whether the name appears
              >in the file system and is visible
              >       to functions that take pathnames
              >as arguments.  The name argument con-
              >       forms to the construction rules
              >for a pathname. If  name  begins  with
              >       the  slash  character,
              >then processes calling sem_open() with the same
              >       value of name shall refer
              >to the same semaphore  object,  as  long  
              >as
              >       that  name has not
              >been removed. If name does not begin with the slash
              >       character, the effect is implementation-defined.
              >The interpretation of
              >       slash  characters  other
              > than  the leading slash character in name is
              >       implementation-defined.
              >
              >On MAC OS X  1.4.2
              >==================
              >nothing specific about name even nothing about '/'  :(
              >
              >~~~~~~~~~~~~~~~~~~~~~~~~~~~
              >I think that the problem is because for some reason sem_open fails
              >and all operations with resulted sema pointer after this are causing
              >segmentation fault. perror should help to understand what is causing that.
              >
              >
              >Good luck
              >--- sas


              GCC: (GNU) 3.3.3 [FreeBSD] 20031106 - это если интересует моя система(выдрано из elf'а)

            • Именнованые семафоры в FreeBSD 5.3, !*! chip, 11:26 , 22-Сен-05 (10)
              >Intertesno. A kakja u Vas sistema?


              http://www.freebsd.org/cgi/man.cgi?query=sem_open&apropos=0&...

              Собственно в SUBJ'e указана.

  • Именнованые семафоры в FreeBSD 5.3, !*! butcher, 15:20 , 22-Сен-05 (11)
    >Реализация Posix. Компилится на ура. Но вот на вызове sem_open() вылетает segmentation
    >fault. В чем же может быть дело?

    какое точно сообщение пишется? Случайно не bad system call?
    Попробуйте включить в ядро поддержку P1003_1B_SEMAPHORES.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру