* [Xenomai-core] rt_task_delete segfault in libnative.so.3.0.0 @ 2009-03-31 18:53 Adam Bennett 2009-04-01 8:44 ` Philippe Gerum 0 siblings, 1 reply; 8+ messages in thread From: Adam Bennett @ 2009-03-31 18:53 UTC (permalink / raw) To: xenomai I'm running xenomai-head, linux-2.6.28.9, with uclibc-0.9.30.1. I have to run configure with --build=i586-gentoo-linux-uclibc --without-__thread. The problem I'm seeing is a segfault whenever calling rt_task_delete. This even occurs with the example program trivial-periodic. I have debug enabled in the kernel, but nothing interesting appears in syslog. Any thoughts? Adam ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Xenomai-core] rt_task_delete segfault in libnative.so.3.0.0 2009-03-31 18:53 [Xenomai-core] rt_task_delete segfault in libnative.so.3.0.0 Adam Bennett @ 2009-04-01 8:44 ` Philippe Gerum 2009-04-01 15:55 ` Adam Bennett 0 siblings, 1 reply; 8+ messages in thread From: Philippe Gerum @ 2009-04-01 8:44 UTC (permalink / raw) To: Adam Bennett; +Cc: xenomai On Tue, 2009-03-31 at 14:53 -0400, Adam Bennett wrote: > I'm running xenomai-head, linux-2.6.28.9, with uclibc-0.9.30.1. > > I have to run configure with --build=i586-gentoo-linux-uclibc > --without-__thread. > > The problem I'm seeing is a segfault whenever calling rt_task_delete. > This even occurs with the example program trivial-periodic. > > I have debug enabled in the kernel, but nothing interesting appears in syslog. > > Any thoughts? > gdb? > Adam > > _______________________________________________ > Xenomai-core mailing list > Xenomai-core@domain.hid > https://mail.gna.org/listinfo/xenomai-core -- Philippe. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Xenomai-core] rt_task_delete segfault in libnative.so.3.0.0 2009-04-01 8:44 ` Philippe Gerum @ 2009-04-01 15:55 ` Adam Bennett 2009-04-01 16:01 ` Gilles Chanteperdrix 2009-04-01 16:18 ` Gilles Chanteperdrix 0 siblings, 2 replies; 8+ messages in thread From: Adam Bennett @ 2009-04-01 15:55 UTC (permalink / raw) To: Philippe Gerum; +Cc: xenomai On Wed, Apr 1, 2009 at 4:44 AM, Philippe Gerum <rpm@xenomai.org> wrote: > On Tue, 2009-03-31 at 14:53 -0400, Adam Bennett wrote: >> I'm running xenomai-head, linux-2.6.28.9, with uclibc-0.9.30.1. >> >> I have to run configure with --build=i586-gentoo-linux-uclibc >> --without-__thread. >> >> The problem I'm seeing is a segfault whenever calling rt_task_delete. >> This even occurs with the example program trivial-periodic. >> >> I have debug enabled in the kernel, but nothing interesting appears in syslog. >> >> Any thoughts? >> > > gdb? Here's the backtrace (this is my first time using gdb, I've been a fan of printf) after recompiling xenoami userland libs with debugging: Thread 3 (process 1263): #0 0xb7f0c5a6 in rt_task_wait_period (overruns_r=0x0) at ../../../../xenomai-head/src/skins/native/task.c:286 muxcode = 134283819 resultvar = 2739887275 #1 0x08048638 in demo (arg=0x0) at trivial-periodic.c:26 now = 1238598807752498347 previous = 1238598807752498347 #2 0xb7f0c056 in rt_task_trampoline (cookie=0x0) at ../../../../xenomai-head/src/skins/native/task.c:111 iargs = (struct rt_task_iargs *) 0xbfb2c840 entry = (void (*)(void *)) 0x8048604 <demo> bulk = {a1 = 134520892, a2 = 134514592, a3 = 99, a4 = 0, a5 = 1026, a6 = 147481040} task = (RT_TASK *) 0x804a03c self = (RT_TASK *) 0x8ca6138 err = 0 #3 0xb7f14f78 in pthread_start_thread () from /lib/libpthread.so.0 No symbol table info available. #4 0xb7ec9efe in clone () from /lib/libc.so.0 No symbol table info available. Thread 2 (process 1262): #0 0xb7ecc330 in poll () from /lib/libc.so.0 No symbol table info available. #1 0xb7f1aff4 in ?? () from /lib/libpthread.so.0 No symbol table info available. #2 0x000004ef in ?? () No symbol table info available. #3 0xb7f152a4 in __pthread_manager () from /lib/libpthread.so.0 No symbol table info available. #4 0x00000000 in ?? () No symbol table info available. Thread 1 (process 1261): #0 0xb7f0c455 in rt_task_delete (task=0x804a03c) at ../../../../xenomai-head/src/skins/native/task.c:252 err = -1078802316 #1 0x08048737 in main () at trivial-periodic.c:71 No locals. The line that causes the segfault is 252: 248 int rt_task_delete(RT_TASK *task) 249 { 250 int err; 251 252 if (!task || task->opaque == rt_task_self()->opaque) { 253 /* Silently migrate to avoid raising SIGXCPU. */ 254 XENOMAI_SYSCALL1(__xn_sys_migrate, XENOMAI_LINUX_DOMAIN); It looks like with --without-__thread that task->opaque or rt_task_self()->opaque is not valid? > >> Adam >> >> _______________________________________________ >> Xenomai-core mailing list >> Xenomai-core@domain.hid >> https://mail.gna.org/listinfo/xenomai-core > -- > Philippe. > > > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Xenomai-core] rt_task_delete segfault in libnative.so.3.0.0 2009-04-01 15:55 ` Adam Bennett @ 2009-04-01 16:01 ` Gilles Chanteperdrix 2009-04-01 16:18 ` Gilles Chanteperdrix 1 sibling, 0 replies; 8+ messages in thread From: Gilles Chanteperdrix @ 2009-04-01 16:01 UTC (permalink / raw) To: Adam Bennett; +Cc: xenomai Adam Bennett wrote: > On Wed, Apr 1, 2009 at 4:44 AM, Philippe Gerum <rpm@xenomai.org> wrote: >> On Tue, 2009-03-31 at 14:53 -0400, Adam Bennett wrote: >>> I'm running xenomai-head, linux-2.6.28.9, with uclibc-0.9.30.1. >>> >>> I have to run configure with --build=i586-gentoo-linux-uclibc >>> --without-__thread. >>> >>> The problem I'm seeing is a segfault whenever calling rt_task_delete. >>> This even occurs with the example program trivial-periodic. >>> >>> I have debug enabled in the kernel, but nothing interesting appears in syslog. >>> >>> Any thoughts? >>> >> gdb? > > Here's the backtrace (this is my first time using gdb, I've been a fan > of printf) after recompiling xenoami userland libs with debugging: > > Thread 3 (process 1263): > #0 0xb7f0c5a6 in rt_task_wait_period (overruns_r=0x0) > at ../../../../xenomai-head/src/skins/native/task.c:286 > muxcode = 134283819 > resultvar = 2739887275 > #1 0x08048638 in demo (arg=0x0) at trivial-periodic.c:26 > now = 1238598807752498347 > previous = 1238598807752498347 > #2 0xb7f0c056 in rt_task_trampoline (cookie=0x0) > at ../../../../xenomai-head/src/skins/native/task.c:111 > iargs = (struct rt_task_iargs *) 0xbfb2c840 > entry = (void (*)(void *)) 0x8048604 <demo> > bulk = {a1 = 134520892, a2 = 134514592, a3 = 99, a4 = 0, a5 = 1026, > a6 = 147481040} > task = (RT_TASK *) 0x804a03c > self = (RT_TASK *) 0x8ca6138 > err = 0 > #3 0xb7f14f78 in pthread_start_thread () from /lib/libpthread.so.0 > No symbol table info available. > #4 0xb7ec9efe in clone () from /lib/libc.so.0 > No symbol table info available. > > Thread 2 (process 1262): > #0 0xb7ecc330 in poll () from /lib/libc.so.0 > No symbol table info available. > #1 0xb7f1aff4 in ?? () from /lib/libpthread.so.0 > No symbol table info available. > #2 0x000004ef in ?? () > No symbol table info available. > #3 0xb7f152a4 in __pthread_manager () from /lib/libpthread.so.0 > No symbol table info available. > #4 0x00000000 in ?? () > No symbol table info available. > > Thread 1 (process 1261): > #0 0xb7f0c455 in rt_task_delete (task=0x804a03c) > at ../../../../xenomai-head/src/skins/native/task.c:252 > err = -1078802316 > #1 0x08048737 in main () at trivial-periodic.c:71 > No locals. > > The line that causes the segfault is 252: > > 248 int rt_task_delete(RT_TASK *task) > 249 { > 250 int err; > 251 > 252 if (!task || task->opaque == rt_task_self()->opaque) { > 253 /* Silently migrate to avoid raising SIGXCPU. */ > 254 XENOMAI_SYSCALL1(__xn_sys_migrate, XENOMAI_LINUX_DOMAIN); > > It looks like with --without-__thread that task->opaque or > rt_task_self()->opaque is not valid? This code is bogus. It will only work if rt_task_delete is called from a native task. Which is obviously not always the case. -- Gilles. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Xenomai-core] rt_task_delete segfault in libnative.so.3.0.0 2009-04-01 15:55 ` Adam Bennett 2009-04-01 16:01 ` Gilles Chanteperdrix @ 2009-04-01 16:18 ` Gilles Chanteperdrix 2009-04-01 16:30 ` Philippe Gerum 1 sibling, 1 reply; 8+ messages in thread From: Gilles Chanteperdrix @ 2009-04-01 16:18 UTC (permalink / raw) To: Adam Bennett; +Cc: xenomai Adam Bennett wrote: > On Wed, Apr 1, 2009 at 4:44 AM, Philippe Gerum <rpm@xenomai.org> wrote: >> On Tue, 2009-03-31 at 14:53 -0400, Adam Bennett wrote: >>> I'm running xenomai-head, linux-2.6.28.9, with uclibc-0.9.30.1. >>> >>> I have to run configure with --build=i586-gentoo-linux-uclibc >>> --without-__thread. >>> >>> The problem I'm seeing is a segfault whenever calling rt_task_delete. >>> This even occurs with the example program trivial-periodic. >>> >>> I have debug enabled in the kernel, but nothing interesting appears in syslog. >>> >>> Any thoughts? >>> >> gdb? > > Here's the backtrace (this is my first time using gdb, I've been a fan > of printf) after recompiling xenoami userland libs with debugging: > > Thread 3 (process 1263): > #0 0xb7f0c5a6 in rt_task_wait_period (overruns_r=0x0) > at ../../../../xenomai-head/src/skins/native/task.c:286 > muxcode = 134283819 > resultvar = 2739887275 > #1 0x08048638 in demo (arg=0x0) at trivial-periodic.c:26 > now = 1238598807752498347 > previous = 1238598807752498347 > #2 0xb7f0c056 in rt_task_trampoline (cookie=0x0) > at ../../../../xenomai-head/src/skins/native/task.c:111 > iargs = (struct rt_task_iargs *) 0xbfb2c840 > entry = (void (*)(void *)) 0x8048604 <demo> > bulk = {a1 = 134520892, a2 = 134514592, a3 = 99, a4 = 0, a5 = 1026, > a6 = 147481040} > task = (RT_TASK *) 0x804a03c > self = (RT_TASK *) 0x8ca6138 > err = 0 > #3 0xb7f14f78 in pthread_start_thread () from /lib/libpthread.so.0 > No symbol table info available. > #4 0xb7ec9efe in clone () from /lib/libc.so.0 > No symbol table info available. > > Thread 2 (process 1262): > #0 0xb7ecc330 in poll () from /lib/libc.so.0 > No symbol table info available. > #1 0xb7f1aff4 in ?? () from /lib/libpthread.so.0 > No symbol table info available. > #2 0x000004ef in ?? () > No symbol table info available. > #3 0xb7f152a4 in __pthread_manager () from /lib/libpthread.so.0 > No symbol table info available. > #4 0x00000000 in ?? () > No symbol table info available. > > Thread 1 (process 1261): > #0 0xb7f0c455 in rt_task_delete (task=0x804a03c) > at ../../../../xenomai-head/src/skins/native/task.c:252 > err = -1078802316 > #1 0x08048737 in main () at trivial-periodic.c:71 > No locals. > > The line that causes the segfault is 252: > > 248 int rt_task_delete(RT_TASK *task) > 249 { > 250 int err; > 251 > 252 if (!task || task->opaque == rt_task_self()->opaque) { try: if (!task || rt_task_self() && task->opaque == rt_task_self()->opaque) -- Gilles. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Xenomai-core] rt_task_delete segfault in libnative.so.3.0.0 2009-04-01 16:18 ` Gilles Chanteperdrix @ 2009-04-01 16:30 ` Philippe Gerum 2009-04-01 17:37 ` Jan Kiszka 0 siblings, 1 reply; 8+ messages in thread From: Philippe Gerum @ 2009-04-01 16:30 UTC (permalink / raw) To: Gilles Chanteperdrix; +Cc: xenomai On Wed, 2009-04-01 at 18:18 +0200, Gilles Chanteperdrix wrote: > Adam Bennett wrote: > > On Wed, Apr 1, 2009 at 4:44 AM, Philippe Gerum <rpm@xenomai.org> wrote: > >> On Tue, 2009-03-31 at 14:53 -0400, Adam Bennett wrote: > >>> I'm running xenomai-head, linux-2.6.28.9, with uclibc-0.9.30.1. > >>> > >>> I have to run configure with --build=i586-gentoo-linux-uclibc > >>> --without-__thread. > >>> > >>> The problem I'm seeing is a segfault whenever calling rt_task_delete. > >>> This even occurs with the example program trivial-periodic. > >>> > >>> I have debug enabled in the kernel, but nothing interesting appears in syslog. > >>> > >>> Any thoughts? > >>> > >> gdb? > > > > Here's the backtrace (this is my first time using gdb, I've been a fan > > of printf) after recompiling xenoami userland libs with debugging: > > > > Thread 3 (process 1263): > > #0 0xb7f0c5a6 in rt_task_wait_period (overruns_r=0x0) > > at ../../../../xenomai-head/src/skins/native/task.c:286 > > muxcode = 134283819 > > resultvar = 2739887275 > > #1 0x08048638 in demo (arg=0x0) at trivial-periodic.c:26 > > now = 1238598807752498347 > > previous = 1238598807752498347 > > #2 0xb7f0c056 in rt_task_trampoline (cookie=0x0) > > at ../../../../xenomai-head/src/skins/native/task.c:111 > > iargs = (struct rt_task_iargs *) 0xbfb2c840 > > entry = (void (*)(void *)) 0x8048604 <demo> > > bulk = {a1 = 134520892, a2 = 134514592, a3 = 99, a4 = 0, a5 = 1026, > > a6 = 147481040} > > task = (RT_TASK *) 0x804a03c > > self = (RT_TASK *) 0x8ca6138 > > err = 0 > > #3 0xb7f14f78 in pthread_start_thread () from /lib/libpthread.so.0 > > No symbol table info available. > > #4 0xb7ec9efe in clone () from /lib/libc.so.0 > > No symbol table info available. > > > > Thread 2 (process 1262): > > #0 0xb7ecc330 in poll () from /lib/libc.so.0 > > No symbol table info available. > > #1 0xb7f1aff4 in ?? () from /lib/libpthread.so.0 > > No symbol table info available. > > #2 0x000004ef in ?? () > > No symbol table info available. > > #3 0xb7f152a4 in __pthread_manager () from /lib/libpthread.so.0 > > No symbol table info available. > > #4 0x00000000 in ?? () > > No symbol table info available. > > > > Thread 1 (process 1261): > > #0 0xb7f0c455 in rt_task_delete (task=0x804a03c) > > at ../../../../xenomai-head/src/skins/native/task.c:252 > > err = -1078802316 > > #1 0x08048737 in main () at trivial-periodic.c:71 > > No locals. > > > > The line that causes the segfault is 252: > > > > 248 int rt_task_delete(RT_TASK *task) > > 249 { > > 250 int err; > > 251 > > 252 if (!task || task->opaque == rt_task_self()->opaque) { > > try: > > if (!task || rt_task_self() && task->opaque == rt_task_self()->opaque) > > Indeed. The following patch is queued. diff --git a/src/skins/native/task.c b/src/skins/native/task.c index 5cf37d9..905d366 100644 --- a/src/skins/native/task.c +++ b/src/skins/native/task.c @@ -249,10 +249,10 @@ int rt_task_delete(RT_TASK *task) { int err; - if (!task || task->opaque == rt_task_self()->opaque) { + if (task == NULL || + (rt_task_self() && task->opaque == rt_task_self()->opaque)) { /* Silently migrate to avoid raising SIGXCPU. */ XENOMAI_SYSCALL1(__xn_sys_migrate, XENOMAI_LINUX_DOMAIN); - pthread_exit(NULL); } -- Philippe. ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [Xenomai-core] rt_task_delete segfault in libnative.so.3.0.0 2009-04-01 16:30 ` Philippe Gerum @ 2009-04-01 17:37 ` Jan Kiszka 2009-04-01 19:34 ` Adam Bennett 0 siblings, 1 reply; 8+ messages in thread From: Jan Kiszka @ 2009-04-01 17:37 UTC (permalink / raw) To: Philippe Gerum; +Cc: xenomai [-- Attachment #1: Type: text/plain, Size: 3549 bytes --] Philippe Gerum wrote: > On Wed, 2009-04-01 at 18:18 +0200, Gilles Chanteperdrix wrote: >> Adam Bennett wrote: >>> On Wed, Apr 1, 2009 at 4:44 AM, Philippe Gerum <rpm@xenomai.org> wrote: >>>> On Tue, 2009-03-31 at 14:53 -0400, Adam Bennett wrote: >>>>> I'm running xenomai-head, linux-2.6.28.9, with uclibc-0.9.30.1. >>>>> >>>>> I have to run configure with --build=i586-gentoo-linux-uclibc >>>>> --without-__thread. >>>>> >>>>> The problem I'm seeing is a segfault whenever calling rt_task_delete. >>>>> This even occurs with the example program trivial-periodic. >>>>> >>>>> I have debug enabled in the kernel, but nothing interesting appears in syslog. >>>>> >>>>> Any thoughts? >>>>> >>>> gdb? >>> Here's the backtrace (this is my first time using gdb, I've been a fan >>> of printf) after recompiling xenoami userland libs with debugging: >>> >>> Thread 3 (process 1263): >>> #0 0xb7f0c5a6 in rt_task_wait_period (overruns_r=0x0) >>> at ../../../../xenomai-head/src/skins/native/task.c:286 >>> muxcode = 134283819 >>> resultvar = 2739887275 >>> #1 0x08048638 in demo (arg=0x0) at trivial-periodic.c:26 >>> now = 1238598807752498347 >>> previous = 1238598807752498347 >>> #2 0xb7f0c056 in rt_task_trampoline (cookie=0x0) >>> at ../../../../xenomai-head/src/skins/native/task.c:111 >>> iargs = (struct rt_task_iargs *) 0xbfb2c840 >>> entry = (void (*)(void *)) 0x8048604 <demo> >>> bulk = {a1 = 134520892, a2 = 134514592, a3 = 99, a4 = 0, a5 = 1026, >>> a6 = 147481040} >>> task = (RT_TASK *) 0x804a03c >>> self = (RT_TASK *) 0x8ca6138 >>> err = 0 >>> #3 0xb7f14f78 in pthread_start_thread () from /lib/libpthread.so.0 >>> No symbol table info available. >>> #4 0xb7ec9efe in clone () from /lib/libc.so.0 >>> No symbol table info available. >>> >>> Thread 2 (process 1262): >>> #0 0xb7ecc330 in poll () from /lib/libc.so.0 >>> No symbol table info available. >>> #1 0xb7f1aff4 in ?? () from /lib/libpthread.so.0 >>> No symbol table info available. >>> #2 0x000004ef in ?? () >>> No symbol table info available. >>> #3 0xb7f152a4 in __pthread_manager () from /lib/libpthread.so.0 >>> No symbol table info available. >>> #4 0x00000000 in ?? () >>> No symbol table info available. >>> >>> Thread 1 (process 1261): >>> #0 0xb7f0c455 in rt_task_delete (task=0x804a03c) >>> at ../../../../xenomai-head/src/skins/native/task.c:252 >>> err = -1078802316 >>> #1 0x08048737 in main () at trivial-periodic.c:71 >>> No locals. >>> >>> The line that causes the segfault is 252: >>> >>> 248 int rt_task_delete(RT_TASK *task) >>> 249 { >>> 250 int err; >>> 251 >>> 252 if (!task || task->opaque == rt_task_self()->opaque) { >> try: >> >> if (!task || rt_task_self() && task->opaque == rt_task_self()->opaque) >> >> > > Indeed. The following patch is queued. > > diff --git a/src/skins/native/task.c b/src/skins/native/task.c > index 5cf37d9..905d366 100644 > --- a/src/skins/native/task.c > +++ b/src/skins/native/task.c > @@ -249,10 +249,10 @@ int rt_task_delete(RT_TASK *task) > { > int err; > > - if (!task || task->opaque == rt_task_self()->opaque) { > + if (task == NULL || > + (rt_task_self() && task->opaque == rt_task_self()->opaque)) { > /* Silently migrate to avoid raising SIGXCPU. */ > XENOMAI_SYSCALL1(__xn_sys_migrate, XENOMAI_LINUX_DOMAIN); > - > pthread_exit(NULL); > } > Mea culpa. I would just suggest to put rt_task_self() into a local variable to avoid double evaluation. Jan [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 257 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Xenomai-core] rt_task_delete segfault in libnative.so.3.0.0 2009-04-01 17:37 ` Jan Kiszka @ 2009-04-01 19:34 ` Adam Bennett 0 siblings, 0 replies; 8+ messages in thread From: Adam Bennett @ 2009-04-01 19:34 UTC (permalink / raw) To: Jan Kiszka; +Cc: xenomai 2009/4/1 Jan Kiszka <jan.kiszka@domain.hid>: > Philippe Gerum wrote: >> On Wed, 2009-04-01 at 18:18 +0200, Gilles Chanteperdrix wrote: >>> Adam Bennett wrote: >>>> On Wed, Apr 1, 2009 at 4:44 AM, Philippe Gerum <rpm@xenomai.org> wrote: >>>>> On Tue, 2009-03-31 at 14:53 -0400, Adam Bennett wrote: >>>>>> I'm running xenomai-head, linux-2.6.28.9, with uclibc-0.9.30.1. >>>>>> >>>>>> I have to run configure with --build=i586-gentoo-linux-uclibc >>>>>> --without-__thread. >>>>>> >>>>>> The problem I'm seeing is a segfault whenever calling rt_task_delete. >>>>>> This even occurs with the example program trivial-periodic. >>>>>> >>>>>> I have debug enabled in the kernel, but nothing interesting appears in syslog. >>>>>> >>>>>> Any thoughts? >>>>>> >>>>> gdb? >>>> Here's the backtrace (this is my first time using gdb, I've been a fan >>>> of printf) after recompiling xenoami userland libs with debugging: >>>> >>>> Thread 3 (process 1263): >>>> #0 0xb7f0c5a6 in rt_task_wait_period (overruns_r=0x0) >>>> at ../../../../xenomai-head/src/skins/native/task.c:286 >>>> muxcode = 134283819 >>>> resultvar = 2739887275 >>>> #1 0x08048638 in demo (arg=0x0) at trivial-periodic.c:26 >>>> now = 1238598807752498347 >>>> previous = 1238598807752498347 >>>> #2 0xb7f0c056 in rt_task_trampoline (cookie=0x0) >>>> at ../../../../xenomai-head/src/skins/native/task.c:111 >>>> iargs = (struct rt_task_iargs *) 0xbfb2c840 >>>> entry = (void (*)(void *)) 0x8048604 <demo> >>>> bulk = {a1 = 134520892, a2 = 134514592, a3 = 99, a4 = 0, a5 = 1026, >>>> a6 = 147481040} >>>> task = (RT_TASK *) 0x804a03c >>>> self = (RT_TASK *) 0x8ca6138 >>>> err = 0 >>>> #3 0xb7f14f78 in pthread_start_thread () from /lib/libpthread.so.0 >>>> No symbol table info available. >>>> #4 0xb7ec9efe in clone () from /lib/libc.so.0 >>>> No symbol table info available. >>>> >>>> Thread 2 (process 1262): >>>> #0 0xb7ecc330 in poll () from /lib/libc.so.0 >>>> No symbol table info available. >>>> #1 0xb7f1aff4 in ?? () from /lib/libpthread.so.0 >>>> No symbol table info available. >>>> #2 0x000004ef in ?? () >>>> No symbol table info available. >>>> #3 0xb7f152a4 in __pthread_manager () from /lib/libpthread.so.0 >>>> No symbol table info available. >>>> #4 0x00000000 in ?? () >>>> No symbol table info available. >>>> >>>> Thread 1 (process 1261): >>>> #0 0xb7f0c455 in rt_task_delete (task=0x804a03c) >>>> at ../../../../xenomai-head/src/skins/native/task.c:252 >>>> err = -1078802316 >>>> #1 0x08048737 in main () at trivial-periodic.c:71 >>>> No locals. >>>> >>>> The line that causes the segfault is 252: >>>> >>>> 248 int rt_task_delete(RT_TASK *task) >>>> 249 { >>>> 250 int err; >>>> 251 >>>> 252 if (!task || task->opaque == rt_task_self()->opaque) { >>> try: >>> >>> if (!task || rt_task_self() && task->opaque == rt_task_self()->opaque) >>> >>> >> >> Indeed. The following patch is queued. >> >> diff --git a/src/skins/native/task.c b/src/skins/native/task.c >> index 5cf37d9..905d366 100644 >> --- a/src/skins/native/task.c >> +++ b/src/skins/native/task.c >> @@ -249,10 +249,10 @@ int rt_task_delete(RT_TASK *task) >> { >> int err; >> >> - if (!task || task->opaque == rt_task_self()->opaque) { >> + if (task == NULL || >> + (rt_task_self() && task->opaque == rt_task_self()->opaque)) { >> /* Silently migrate to avoid raising SIGXCPU. */ >> XENOMAI_SYSCALL1(__xn_sys_migrate, XENOMAI_LINUX_DOMAIN); >> - >> pthread_exit(NULL); >> } >> Thanks, this fixed the segfaults! Adam > > Mea culpa. > > I would just suggest to put rt_task_self() into a local variable to > avoid double evaluation. > > Jan > > > _______________________________________________ > Xenomai-core mailing list > Xenomai-core@domain.hid > https://mail.gna.org/listinfo/xenomai-core > > ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2009-04-01 19:34 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-03-31 18:53 [Xenomai-core] rt_task_delete segfault in libnative.so.3.0.0 Adam Bennett 2009-04-01 8:44 ` Philippe Gerum 2009-04-01 15:55 ` Adam Bennett 2009-04-01 16:01 ` Gilles Chanteperdrix 2009-04-01 16:18 ` Gilles Chanteperdrix 2009-04-01 16:30 ` Philippe Gerum 2009-04-01 17:37 ` Jan Kiszka 2009-04-01 19:34 ` Adam Bennett
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.