From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <4B676938.4070805@domain.hid> Date: Tue, 02 Feb 2010 00:52:24 +0100 From: Gilles Chanteperdrix MIME-Version: 1.0 References: <4B675733.3040902@domain.hid> In-Reply-To: <4B675733.3040902@domain.hid> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: Re: [Xenomai-help] Xenomai 2.5.0: rt_task_shadow fails when libnative is statically linked. List-Id: Help regarding installation and common use of Xenomai List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Henri Roosen Cc: xenomai@xenomai.org Gilles Chanteperdrix wrote: > Henri Roosen wrote: >> Hi all, >> >> I get segmentation fault when calling rt_task_shadow. Actually >> somewhere in the pthread library called from sigshadow_install_once(); >> >> This only happens on Xenomai 2.5 when libnative is statically linked. >> Tested ok on 2.4.10 both dynamically and statically linked. I use >> kernel version 2.6.30.10, xenomai 2.5.0 on x86. >> >> Any idea what is wrong? >> >> Reproduced it with basic app that is attached to this email. Compiled with: >> gcc -D_GNU_SOURCE -D_REENTRANT -Wall -pipe -D__XENO__ >> -I/usr/xenomai/include tst_basic.c -o tst_basic >> /usr/xenomai/lib/libnative.a -lpthread >> >> Segfailt in dmesg on xenomai 2.5.0: >> tst_basic_2.5[1351]: segfault at 0 ip b7ff5a54 sp bfc9b46c error 4 in >> libpthread-2.9.so[b7feb000+13000] > > Ok. Reproduced here. It looks like xeno_sigshadow_install and > xeno_sigshadow_installed have no address. I am on it. The following patch seems to fix the issue for me. diff --git a/include/asm-generic/bits/sigshadow.h b/include/asm-generic/bits/sigshadow.h index 5a32762..e07ce00 100644 --- a/include/asm-generic/bits/sigshadow.h +++ b/include/asm-generic/bits/sigshadow.h @@ -4,10 +4,10 @@ #include #include -extern pthread_once_t __attribute__((weak)) xeno_sigshadow_installed; -extern struct sigaction __attribute__((weak)) xeno_saved_sigshadow_action; +extern pthread_once_t xeno_sigshadow_installed; +extern struct sigaction xeno_saved_sigshadow_action; -void __attribute__((weak)) xeno_sigshadow_install(void); +void xeno_sigshadow_install(void); static inline void sigshadow_install_once(void) { -- Gilles.