URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4671
[ Назад ]

Исходное сообщение
"Именнованые семафоры в 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 , 22-Сен-05 01:24 
>Был протестирован следующий код :
>
>#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 , 22-Сен-05 02:04 
>>Был протестирован следующий код :
>>
>>#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 , 22-Сен-05 06:41 
>>>Был протестирован следующий код :
>>>
>>>#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 , 22-Сен-05 10:09 
>>>>Был протестирован следующий код :
>>>>
>>>>#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 , 22-Сен-05 10:22 
>>>>>Был протестирован следующий код :
>>>>>
>>>>>#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 , 22-Сен-05 10:39 
>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 , 22-Сен-05 10:56 
>>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 , 22-Сен-05 11:05 
>>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 , 22-Сен-05 11:19 
>>>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 , 22-Сен-05 11:26 
>Intertesno. A kakja u Vas sistema?


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

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


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

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