Philippe Gerum wrote:
> Jan Kiszka wrote:
> 
>> Jan Kiszka wrote:
>>
>>> Jan Kiszka wrote:
>>>
>>>> Hi,
>>>>
>>>> something for the night: Can someone explain why normal pthreads can be
>>>> restricted to initially use only the stack size provided via
>>>> pthread_attr_setstacksize() while any rt-mapped thread (posix and
>>>> native) refuse to accept this? For a simple test, compile the attached
>>>> program one time as normal
>>>>
>>>>    gcc -lpthread -o stacksize stacksize.c
>>>>
>>>> and the other time against xeno's posix skin
>>>>
>>>>    gcc `xeno-config --posix-cflags` `xeno-config --posix-ldflags` \
>>>>        -o stacksize.o stacksize.c
>>>>
>>>> Then compare the memory requirements of both processes - they should
>>>> differ by 2M, the stack size when pthread_attr_setstacksize is not
>>>> used.
>>>> Strange - and also critical when considering larger applications...
>>>
>>>
>>> This has been nailed down now to be some strange linker problem: while
>>> the standard version of the stacksize demo calls the latest
>>> pthread_create (__pthread_create_2_1 in glibc-2.3.x), the wrapped
>>> real-time version and likely also applications linked against libnative
>>> call an older pthread_create (__pthread_create_2_0). That variant
>>> assumes that pthread_attr_t does not yet contain things like the stack
>>> size and fills in the standard value again. :(
>>>
>>> Can anyone with another build environment than my SuSE 10 confirm this?
>>>
>>>
>>>> So far I only tested against 2.1, but I don't see a reason why 2.0.x
>>>> should behave different. Will get checked, though.
>>>>
>>>
>>> Same behaviour on 2.0.x (SVN).
>>>
>>> Jan
>>>
>>
>>
>> The attached patch fixes this issue for 2.1-SVN. A similar patch should
>> be applied to 2.0.x as well. And maybe it also hits the UVM, but this is
>> something I cannot assess ATM.
>>
>> Well, you know, the smaller the bug... :-/
>>
>> Jan
>>
>>
>> PS: For those you are interested why we need this, read
>>
>> https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=145941
>>
>> Found via google:"pthread_create NOTYPE" after I noticed the differences
>> in "readelf -s libnative.so".
>>
>>
>> ------------------------------------------------------------------------
>>
>> Index: src/skins/native/Makefile.am
>> ===================================================================
>> --- src/skins/native/Makefile.am    (revision 243)
>> +++ src/skins/native/Makefile.am    (working copy)
>> @@ -1,6 +1,6 @@
>>  lib_LTLIBRARIES = libnative.la
>>  
>> -libnative_la_LDFLAGS = -module -version-info 0:0:0
>> +libnative_la_LDFLAGS = -module -version-info 0:0:0 -pthread
>>  
>>  libnative_la_SOURCES = \
>>      alarm.c \
>> Index: src/skins/posix/Makefile.am
>> ===================================================================
>> --- src/skins/posix/Makefile.am    (revision 243)
>> +++ src/skins/posix/Makefile.am    (working copy)
>> @@ -2,7 +2,7 @@
>>  
>>  lib_LTLIBRARIES = libpthread_rt.la
>>  
>> -libpthread_rt_la_LDFLAGS = -module -version-info 0:0:0
>> +libpthread_rt_la_LDFLAGS = -module -version-info 0:0:0 -lpthread
>>
>>  libpthread_rt_la_SOURCES = \
>>      init.c \
> 
> 
> Applied (with -pthread everywhere), thanks.
> 

Hmm, shouldn't is spell -lpthread? Seems like the autotools resolve this
because it works with both versions for me (current posix/Makefile.in
still has "-lpthread").

Jan

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to