* [Xenomai-help] Kernel crash during queue create/destroy
@ 2006-11-15 10:21 Stephan Zimmermann
2006-11-15 13:19 ` Dmitry Adamushko
0 siblings, 1 reply; 16+ messages in thread
From: Stephan Zimmermann @ 2006-11-15 10:21 UTC (permalink / raw)
To: xenomai
Hello,
I got some trouble with the native skin and queues, when creating / deleting
queues, my Kernel sometimes (actually very often...) crashes, leading to a
frozen system, with my Xenomai program continuing until it returns. I tried
to isolate / reproduce the problem, which lead me to the following demo-code.
This piece of code lets reproducible crash my Systems running Kernel
2.6.17.14 / Xenomai 2.2.5 as well as Kernel 2.6.17.6 / Xenomai 2.2.0.
<code>
#include <iostream>
#include <sys/mman.h>
#include <assert.h>
#include "native/task.h"
#include "native/timer.h"
#include "native/queue.h"
RT_TASK maintask;
int main(void){
std::cout << "xenomai 2.2.4 timer-test" << std::endl;
mlockall(MCL_CURRENT | MCL_FUTURE);
int err;
err = rt_task_shadow (&maintask,"maintask",10,0);
std::cout << "task shadow:" << err << std::endl;
err = rt_timer_set_mode(1000000);
std::cout << "timer set mode:" << err << std::endl;
err = rt_task_sleep(10);
std::cout << "task sleep:" << err << std::endl;
std::cout << "testing XENOMAI q-functions" << std::endl;
RT_QUEUE* testq;
for(int i = 0; i < 100; i++){
for(int j = 0; j < 10; j++){
testq = new RT_QUEUE;
err = rt_queue_create(testq,"testq",10240,100,Q_FIFO);
if(err == -EEXIST){
err = rt_queue_bind(testq,"testq",100000000);
}
assert(err == 0);
rt_task_sleep(1); // commenting this seems to make things work
err = rt_queue_delete(testq);
assert(err == 0);
delete testq;
//rt_task_sleep(10); // uncommenting this seems to make things work
}
std::cout << "." << std::flush;
}
std::cout << "ok" << std::endl;
return 0;
}
</code>
The crash leads ti the following information in syslog:
<syslog>
Nov 14 16:47:55 localhost kernel: BUG: unable to handle kernel NULL pointer
dereference at virtual address 00000000
Nov 14 16:47:55 localhost kernel: printing eip:
Nov 14 16:47:55 localhost kernel: c01a6f66
Nov 14 16:47:55 localhost kernel: *pde = 00000000
Nov 14 16:47:55 localhost kernel: Oops: 0000 [#1]
Nov 14 16:47:55 localhost kernel: PREEMPT
Nov 14 16:47:55 localhost kernel: Modules linked in: ipv6 nfs lockd sunrpc
snd_mpu401 floppy pcspkr rtc snd_via82xx gameport snd_ac97_codec snd_ac97_bus
snd_pcm snd_timer snd_page_alloc snd_mpu401_uart snd_rawmidi snd_seq_device
snd soundcore i2c_viapro i2c_core generic 8139cp amd64_agp agpgart tsdev
mousedev ehci_hcd usbhid uhci_hcd usbcore via82cxxx 8139too mii psmouse
ide_generic ide_disk ide_cd cdrom ide_core unix
Nov 14 16:47:55 localhost kernel: CPU: 0
Nov 14 16:47:55 localhost kernel: EIP: 0060:[remove_proc_entry+51/333]
Not tainted VLI
Nov 14 16:47:55 localhost kernel: EFLAGS: 00010286 (2.6.17.14 #5)
Nov 14 16:47:55 localhost kernel: EIP is at remove_proc_entry+0x33/0x14d
Nov 14 16:47:55 localhost kernel: eax: 00000000 ebx: c03d10f4 ecx:
ffffffff edx: 00000000
Nov 14 16:47:55 localhost kernel: esi: c03cd7f8 edi: 00000000 ebp:
f790f8c0 esp: c1907f00
Nov 14 16:47:55 localhost kernel: ds: 007b es: 007b ss: 0068
Nov 14 16:47:55 localhost kernel: Process events/0 (pid: 4,
threadinfo=c1906000 task=c190ea90)
Nov 14 16:47:55 localhost kernel: Stack: 00000000 c03d10f4 c03cd7f8 c03464cc
c0148919 00000000 f790f8c0 00000000
Nov 14 16:47:55 localhost kernel: 00000000 c02ff30d c02ff282 f617b440
f6371ac0 c18e0640 c03460e0 00000200
Nov 14 16:47:55 localhost kernel: 00000000 c0126773 00000000 c0147fa5
c1906000 c190ea90 fffffffb c18e0640
Nov 14 16:47:55 localhost kernel: Call Trace:
Nov 14 16:47:55 localhost kernel: <c0148919>
registry_proc_callback+0x974/0x9ec <c0126773> run_workqueue+0xd7/0x172
Nov 14 16:47:55 localhost kernel: <c0147fa5> registry_proc_callback+0x0/0x9ec
<c0126906> worker_thread+0xf8/0x12a
Nov 14 16:47:55 localhost kernel: <c0112a33> default_wake_function+0x0/0x12
<c02e04a4> schedule+0x62e/0x64d
Nov 14 16:47:55 localhost kernel: <c0112a33> default_wake_function+0x0/0x12
<c012680e> worker_thread+0x0/0x12a
Nov 14 16:47:55 localhost kernel: <c0129922> kthread+0x79/0xa3 <c01298a9>
kthread+0x0/0xa3
Nov 14 16:47:55 localhost kernel: <c0101385> kernel_thread_helper+0x5/0xb
Nov 14 16:47:55 localhost kernel: Code: 00 8b 54 24 14 89 14 24 75 19 89 e0 50
8d 44 24 1c 50 52 e8 a4 f5 ff ff 83 c4 0c 85 c0 0f 85 1d 01 00 00 8b 3c 24 31
c0 83 c9 ff <f2> ae f7 d1 49 81 3d 80 5c 34 c0 00 39 34 c0 89 ce 75 0a b8 01
Nov 14 16:47:55 localhost kernel: EIP: [remove_proc_entry+51/333]
remove_proc_entry+0x33/0x14d SS:ESP 0068:c1907f00
</syslog>
Thanks again,
Stephan
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [Xenomai-help] Kernel crash during queue create/destroy 2006-11-15 10:21 [Xenomai-help] Kernel crash during queue create/destroy Stephan Zimmermann @ 2006-11-15 13:19 ` Dmitry Adamushko 2006-11-15 14:44 ` Stephan Zimmermann 0 siblings, 1 reply; 16+ messages in thread From: Dmitry Adamushko @ 2006-11-15 13:19 UTC (permalink / raw) To: Stephan Zimmermann; +Cc: Xenomai help [-- Attachment #1.1: Type: text/plain, Size: 889 bytes --] Hello, I got some trouble with the native skin and queues, when creating / deleting > queues, my Kernel sometimes (actually very often...) crashes, leading to a > frozen system, with my Xenomai program continuing until it returns. I > tried > to isolate / reproduce the problem, which lead me to the following > demo-code. > > it looks like there is some "misunderstanding" between (1) rt_queue_delete() -> xnregistry_remove() and (2) registry_proc_callback() which crushes in remove_proc_entry(). You may follow the logic in ksrc/nucleus/registry.c. rt_queue_create() -> xnregistry_enter() -> ... -> registry_proc_callback() rt_queue_delete() -> xnregistry_remove() -> ... registry_proc_unexport() I don't have enough time to investigate further right now, but nevertheless, could you apply the following patch and let us know of the outcome? -- Best regards, Dmitry Adamushko [-- Attachment #1.2: Type: text/html, Size: 1207 bytes --] [-- Attachment #2: registry-test.patch --] [-- Type: text/x-patch, Size: 664 bytes --] --- ksrc/nucleus/registry-old.c 2006-11-15 14:10:02.877744000 +0100 +++ ksrc/nucleus/registry.c 2006-11-15 14:14:44.335173000 +0100 @@ -404,7 +404,10 @@ static inline void registry_proc_export( static inline void registry_proc_unexport(xnobject_t *object) { - if (object->proc != XNOBJECT_PROC_RESERVED1) { + if (!object->proc || object->proc == XNOBJECT_PROC_RESERVED2) + printk(KERN_INFO "*** object->proc == %x ***\n", object->proc); + + if ((unsigned long)object->proc > (unsigned long)XNOBJECT_PROC_RESERVED2) { removeq(®istry_obj_busyq, &object->link); appendq(®istry_obj_unexportq, &object->link); rthal_apc_schedule(registry_proc_apc); ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-help] Kernel crash during queue create/destroy 2006-11-15 13:19 ` Dmitry Adamushko @ 2006-11-15 14:44 ` Stephan Zimmermann 2006-11-15 21:01 ` Jan Kiszka 2006-11-16 11:57 ` Philippe Gerum 0 siblings, 2 replies; 16+ messages in thread From: Stephan Zimmermann @ 2006-11-15 14:44 UTC (permalink / raw) To: xenomai Am Mittwoch, 15. November 2006 14:19 schrieb Dmitry Adamushko: > Hello, > > I got some trouble with the native skin and queues, when creating / > deleting > > > queues, my Kernel sometimes (actually very often...) crashes, leading to > > a frozen system, with my Xenomai program continuing until it returns. I > > tried > > to isolate / reproduce the problem, which lead me to the following > > demo-code. > > it looks like there is some "misunderstanding" between > > (1) rt_queue_delete() -> xnregistry_remove() > > and > > (2) registry_proc_callback() which crushes in remove_proc_entry(). > > You may follow the logic in ksrc/nucleus/registry.c. > > rt_queue_create() -> xnregistry_enter() -> ... -> registry_proc_callback() > > rt_queue_delete() -> xnregistry_remove() -> ... registry_proc_unexport() > > I don't have enough time to investigate further right now, but > nevertheless, could you apply the following patch and let us know of the > outcome? Thanks for your fast response. I just applied (and recompiled everything...) the patch you attached to your last Post. It doesn't seem to change anything for me. I attached the entries from syslog the test produced. <syslog> Nov 15 15:34:56 localhost kernel: BUG: unable to handle kernel NULL pointer dereference at virtual address 00000000 Nov 15 15:34:56 localhost kernel: printing eip: Nov 15 15:34:56 localhost kernel: c01a6f7e Nov 15 15:34:56 localhost kernel: *pde = 00000000 Nov 15 15:34:56 localhost kernel: Oops: 0000 [#1] Nov 15 15:34:56 localhost kernel: PREEMPT Nov 15 15:34:56 localhost kernel: Modules linked in: ipv6 nfs lockd sunrpc snd_mpu401 floppy pcspkr rtc snd_via82xx gameport snd_ac97_codec snd_ac97_bus snd_pcm snd_timer snd_page_alloc snd_mpu401_uart snd_rawmidi snd_seq_device snd soundcore i2c_viapro i2c_core generic 8139cp tsdev mousedev amd64_agp agpgart ehci_hcd usbhid uhci_hcd usbcore via82cxxx 8139too mii psmouse ide_generic ide_disk ide_cd cdrom ide_core unix Nov 15 15:34:56 localhost kernel: CPU: 0 Nov 15 15:34:56 localhost kernel: EIP: 0060:[remove_proc_entry+51/333] Not tainted VLI Nov 15 15:34:56 localhost kernel: EFLAGS: 00010286 (2.6.17.14 #1) Nov 15 15:34:56 localhost kernel: EIP is at remove_proc_entry+0x33/0x14d Nov 15 15:34:56 localhost kernel: eax: 00000000 ebx: c03d10f4 ecx: ffffffff edx: 00000000 Nov 15 15:34:56 localhost kernel: esi: c03d0a98 edi: 00000000 ebp: f433e0c0 esp: c1907f00 Nov 15 15:34:56 localhost kernel: ds: 007b es: 007b ss: 0068 Nov 15 15:34:56 localhost kernel: Process events/0 (pid: 4, threadinfo=c1906000 task=c190ea90) Nov 15 15:34:56 localhost kernel: Stack: 00000000 c03d10f4 c03d0a98 c03464cc c0148919 00000000 f433e0c0 00000000 Nov 15 15:34:56 localhost kernel: 00000000 c02ff32d c02ff2a2 f6153740 f433ec40 c18e0640 c03460e0 00000200 Nov 15 15:34:56 localhost kernel: 00000000 c0126773 00000000 c0147fa5 c1906000 c190ea90 fffffffb c18e0640 Nov 15 15:34:56 localhost kernel: Call Trace: Nov 15 15:34:57 localhost kernel: <c0148919> registry_proc_callback+0x974/0x9ec <c0126773> run_workqueue+0xd7/0x172 Nov 15 15:34:57 localhost kernel: <c0147fa5> registry_proc_callback+0x0/0x9ec <c0126906> worker_thread+0xf8/0x12a Nov 15 15:34:57 localhost kernel: <c0112a33> default_wake_function+0x0/0x12 <c02e04bc> schedule+0x62e/0x64d Nov 15 15:34:57 localhost kernel: <c0112a33> default_wake_function+0x0/0x12 <c012680e> worker_thread+0x0/0x12a Nov 15 15:34:57 localhost kernel: <c0129922> kthread+0x79/0xa3 <c01298a9> kthread+0x0/0xa3 Nov 15 15:34:57 localhost kernel: <c0101385> kernel_thread_helper+0x5/0xb Nov 15 15:34:57 localhost kernel: Code: 00 8b 54 24 14 89 14 24 75 19 89 e0 50 8d 44 24 1c 50 52 e8 a4 f5 ff ff 83 c4 0c 85 c0 0f 85 1d 01 00 00 8b 3c 24 31 c0 83 c9 ff <f2> ae f7 d1 49 81 3d 80 5c 34 c0 00 39 34 c0 89 ce 75 0a b8 01 Nov 15 15:34:57 localhost kernel: EIP: [remove_proc_entry+51/333] remove_proc_entry+0x33/0x14d SS:ESP 0068:c1907f00 </syslog> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-help] Kernel crash during queue create/destroy 2006-11-15 14:44 ` Stephan Zimmermann @ 2006-11-15 21:01 ` Jan Kiszka 2006-11-15 22:22 ` Philippe Gerum 2006-11-16 11:57 ` Philippe Gerum 1 sibling, 1 reply; 16+ messages in thread From: Jan Kiszka @ 2006-11-15 21:01 UTC (permalink / raw) To: Stephan Zimmermann; +Cc: xenomai [-- Attachment #1: Type: text/plain, Size: 2465 bytes --] Stephan Zimmermann wrote: > Am Mittwoch, 15. November 2006 14:19 schrieb Dmitry Adamushko: >> Hello, >> >> I got some trouble with the native skin and queues, when creating / >> deleting >> >>> queues, my Kernel sometimes (actually very often...) crashes, leading to >>> a frozen system, with my Xenomai program continuing until it returns. I >>> tried >>> to isolate / reproduce the problem, which lead me to the following >>> demo-code. >> it looks like there is some "misunderstanding" between >> >> (1) rt_queue_delete() -> xnregistry_remove() >> >> and >> >> (2) registry_proc_callback() which crushes in remove_proc_entry(). >> >> You may follow the logic in ksrc/nucleus/registry.c. >> >> rt_queue_create() -> xnregistry_enter() -> ... -> registry_proc_callback() >> >> rt_queue_delete() -> xnregistry_remove() -> ... registry_proc_unexport() >> >> I don't have enough time to investigate further right now, but >> nevertheless, could you apply the following patch and let us know of the >> outcome? > > Thanks for your fast response. I just applied (and recompiled everything...) > the patch you attached to your last Post. It doesn't seem to change anything > for me. I attached the entries from syslog the test produced. > /me unfortunately failed to reproduce your problem here. Instead, I found a regression in SVN head - different story for a different thread. I have another debugging suggestion: Enable CONFIG_IPIPE_TRACE_MCOUNT (under Kernel Hacking) and patch the kernel as follows: --- arch/i386/mm/fault.c.orig +++ arch/i386/mm/fault.c @@ -515,6 +515,8 @@ no_context: bust_spinlocks(1); + ipipe_trace_freeze(0); + if (oops_may_print()) { #ifdef CONFIG_X86_PAE if (error_code & 16) { Then recompile it and let your test run. After (and if...) it crashed, you should look at /proc/ipipe/trace/frozen. This will contain a back-trace around the crash. Tune the output via, e.g., echo 1000 > /proc/ipipe/trace/back_trace_points (see also our wiki on more information about the tracer) so that at least the path from the previous rt_queue_create up to the crash is visible. This will give a call history (not just a stack back-trace), as the tracer records all function calls in the kernel. May help us to understand if we hit an unexpected function schedule here. It all sounds like some rare race to me. I hope the trace will not make it vanish... Jan [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 250 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-help] Kernel crash during queue create/destroy 2006-11-15 21:01 ` Jan Kiszka @ 2006-11-15 22:22 ` Philippe Gerum 2006-11-15 22:36 ` Jan Kiszka 2006-11-15 22:44 ` Philippe Gerum 0 siblings, 2 replies; 16+ messages in thread From: Philippe Gerum @ 2006-11-15 22:22 UTC (permalink / raw) To: Jan Kiszka; +Cc: xenomai On Wed, 2006-11-15 at 22:01 +0100, Jan Kiszka wrote: > /me unfortunately failed to reproduce your problem here. Instead, I > found a regression in SVN head - different story for a different thread. > It's reproducible here. This bug triggers if you leave enough time between queue creation and deletion for Linux to deal with its usual business, like running workqueues... Additionally, this bug would not trigger with different queue names passed to the creation routines. It seems to be caused by out-of-sequence create/delete requests of /proc entries relayed to the proc_fs subsystem, which does not perform any sanity checks on the data it is submitted. -- Philippe. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-help] Kernel crash during queue create/destroy 2006-11-15 22:22 ` Philippe Gerum @ 2006-11-15 22:36 ` Jan Kiszka 2006-11-15 22:43 ` Jan Kiszka 2006-11-15 22:46 ` Philippe Gerum 2006-11-15 22:44 ` Philippe Gerum 1 sibling, 2 replies; 16+ messages in thread From: Jan Kiszka @ 2006-11-15 22:36 UTC (permalink / raw) To: rpm; +Cc: xenomai [-- Attachment #1: Type: text/plain, Size: 1823 bytes --] Philippe Gerum wrote: > On Wed, 2006-11-15 at 22:01 +0100, Jan Kiszka wrote: > >> /me unfortunately failed to reproduce your problem here. Instead, I >> found a regression in SVN head - different story for a different thread. >> > > It's reproducible here. This bug triggers if you leave enough time > between queue creation and deletion for Linux to deal with its usual > business, like running workqueues... Additionally, this bug would not > trigger with different queue names passed to the creation routines. It > seems to be caused by out-of-sequence create/delete requests of /proc > entries relayed to the proc_fs subsystem, which does not perform any > sanity checks on the data it is submitted. > Yes, that delay makes the difference. I just added a huge one (100 ticks), and now I get tones of this: > xenomai 2.2.4 timer-test > task shadow:0 > timer set mode:0 > task sleep:0 > testing XENOMAI q-functions > Bad page state in process 'maintask' > page:c10e8b20 flags:0x80000400 mapping:00000000 mapcount:0 count:0 > Trying to fix it up, but a reboot is needed > Backtrace: > <c0103055> show_trace+0x12/0x14 <c01035e0> dump_stack+0x1c/0x1e > <c0157104> bad_page+0x49/0x73 <c01577d8> free_hot_cold_page+0x68/0x13d > <c01578fb> free_hot_page+0xf/0x11 <c0157a17> __free_pages+0x2e/0x39 > <c01646f2> __vunmap+0x90/0xbc <c01647c4> vfree+0x2e/0x30 > <c01388ca> xnheap_destroy_mapped+0xe2/0x11b <c8887d93> rt_queue_delete+0xb5/0xf2 [xeno_native] > <c88836d9> __rt_queue_delete+0x4e/0x72 [xeno_native] <c0141b20> losyscall_event+0xa3/0x145 > <c013594f> __ipipe_dispatch_event+0xac/0x16c <c0109fd2> __ipipe_syscall_root+0x78/0x100 > <c02a5520> system_call+0x20/0x38 Is this also what you see? Looks quite different on first sight. [Note: it's on a qemu box.] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 250 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-help] Kernel crash during queue create/destroy 2006-11-15 22:36 ` Jan Kiszka @ 2006-11-15 22:43 ` Jan Kiszka 2006-11-15 22:46 ` Philippe Gerum 1 sibling, 0 replies; 16+ messages in thread From: Jan Kiszka @ 2006-11-15 22:43 UTC (permalink / raw) To: rpm; +Cc: xenomai [-- Attachment #1: Type: text/plain, Size: 1011 bytes --] Jan Kiszka wrote: > Philippe Gerum wrote: >> On Wed, 2006-11-15 at 22:01 +0100, Jan Kiszka wrote: >> >>> /me unfortunately failed to reproduce your problem here. Instead, I >>> found a regression in SVN head - different story for a different thread. >>> >> It's reproducible here. This bug triggers if you leave enough time >> between queue creation and deletion for Linux to deal with its usual >> business, like running workqueues... Additionally, this bug would not >> trigger with different queue names passed to the creation routines. It >> seems to be caused by out-of-sequence create/delete requests of /proc >> entries relayed to the proc_fs subsystem, which does not perform any >> sanity checks on the data it is submitted. >> > > Yes, that delay makes the difference. I just added a huge one (100 > ticks), and now I get tones of this: No, the delay make no difference for me. This one is a new "property" of #1838 (#1832 is fine), the other issue still doesn't pop up here. [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 250 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-help] Kernel crash during queue create/destroy 2006-11-15 22:36 ` Jan Kiszka 2006-11-15 22:43 ` Jan Kiszka @ 2006-11-15 22:46 ` Philippe Gerum 2006-11-15 22:52 ` Jan Kiszka 1 sibling, 1 reply; 16+ messages in thread From: Philippe Gerum @ 2006-11-15 22:46 UTC (permalink / raw) To: Jan Kiszka; +Cc: xenomai On Wed, 2006-11-15 at 23:36 +0100, Jan Kiszka wrote: > Philippe Gerum wrote: > > On Wed, 2006-11-15 at 22:01 +0100, Jan Kiszka wrote: > > > >> /me unfortunately failed to reproduce your problem here. Instead, I > >> found a regression in SVN head - different story for a different thread. > >> > > > > It's reproducible here. This bug triggers if you leave enough time > > between queue creation and deletion for Linux to deal with its usual > > business, like running workqueues... Additionally, this bug would not > > trigger with different queue names passed to the creation routines. It > > seems to be caused by out-of-sequence create/delete requests of /proc > > entries relayed to the proc_fs subsystem, which does not perform any > > sanity checks on the data it is submitted. > > > > Yes, that delay makes the difference. I just added a huge one (100 > ticks), and now I get tones of this: > > > xenomai 2.2.4 timer-test > > task shadow:0 > > timer set mode:0 > > task sleep:0 > > testing XENOMAI q-functions > > Bad page state in process 'maintask' > > page:c10e8b20 flags:0x80000400 mapping:00000000 mapcount:0 count:0 > > Trying to fix it up, but a reboot is needed > > Backtrace: > > <c0103055> show_trace+0x12/0x14 <c01035e0> dump_stack+0x1c/0x1e > > <c0157104> bad_page+0x49/0x73 <c01577d8> free_hot_cold_page+0x68/0x13d > > <c01578fb> free_hot_page+0xf/0x11 <c0157a17> __free_pages+0x2e/0x39 > > <c01646f2> __vunmap+0x90/0xbc <c01647c4> vfree+0x2e/0x30 > > <c01388ca> xnheap_destroy_mapped+0xe2/0x11b <c8887d93> rt_queue_delete+0xb5/0xf2 [xeno_native] > > <c88836d9> __rt_queue_delete+0x4e/0x72 [xeno_native] <c0141b20> losyscall_event+0xa3/0x145 > > <c013594f> __ipipe_dispatch_event+0xac/0x16c <c0109fd2> __ipipe_syscall_root+0x78/0x100 > > <c02a5520> system_call+0x20/0x38 > > Is this also what you see? Looks quite different on first sight. [Note: > it's on a qemu box.] > Uh, no. Try removing the second part of your heap patch, regarding the memory unreservation routine. -- Philippe. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-help] Kernel crash during queue create/destroy 2006-11-15 22:46 ` Philippe Gerum @ 2006-11-15 22:52 ` Jan Kiszka 0 siblings, 0 replies; 16+ messages in thread From: Jan Kiszka @ 2006-11-15 22:52 UTC (permalink / raw) To: rpm; +Cc: xenomai [-- Attachment #1: Type: text/plain, Size: 2164 bytes --] Philippe Gerum wrote: > On Wed, 2006-11-15 at 23:36 +0100, Jan Kiszka wrote: >> Philippe Gerum wrote: >>> On Wed, 2006-11-15 at 22:01 +0100, Jan Kiszka wrote: >>> >>>> /me unfortunately failed to reproduce your problem here. Instead, I >>>> found a regression in SVN head - different story for a different thread. >>>> >>> It's reproducible here. This bug triggers if you leave enough time >>> between queue creation and deletion for Linux to deal with its usual >>> business, like running workqueues... Additionally, this bug would not >>> trigger with different queue names passed to the creation routines. It >>> seems to be caused by out-of-sequence create/delete requests of /proc >>> entries relayed to the proc_fs subsystem, which does not perform any >>> sanity checks on the data it is submitted. >>> >> Yes, that delay makes the difference. I just added a huge one (100 >> ticks), and now I get tones of this: >> >>> xenomai 2.2.4 timer-test >>> task shadow:0 >>> timer set mode:0 >>> task sleep:0 >>> testing XENOMAI q-functions >>> Bad page state in process 'maintask' >>> page:c10e8b20 flags:0x80000400 mapping:00000000 mapcount:0 count:0 >>> Trying to fix it up, but a reboot is needed >>> Backtrace: >>> <c0103055> show_trace+0x12/0x14 <c01035e0> dump_stack+0x1c/0x1e >>> <c0157104> bad_page+0x49/0x73 <c01577d8> free_hot_cold_page+0x68/0x13d >>> <c01578fb> free_hot_page+0xf/0x11 <c0157a17> __free_pages+0x2e/0x39 >>> <c01646f2> __vunmap+0x90/0xbc <c01647c4> vfree+0x2e/0x30 >>> <c01388ca> xnheap_destroy_mapped+0xe2/0x11b <c8887d93> rt_queue_delete+0xb5/0xf2 [xeno_native] >>> <c88836d9> __rt_queue_delete+0x4e/0x72 [xeno_native] <c0141b20> losyscall_event+0xa3/0x145 >>> <c013594f> __ipipe_dispatch_event+0xac/0x16c <c0109fd2> __ipipe_syscall_root+0x78/0x100 >>> <c02a5520> system_call+0x20/0x38 >> Is this also what you see? Looks quite different on first sight. [Note: >> it's on a qemu box.] >> > > Uh, no. Try removing the second part of your heap patch, regarding the > memory unreservation routine. > Ouch, that part of my patch was nonsense, indeed. Fine again now. Jan [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 250 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-help] Kernel crash during queue create/destroy 2006-11-15 22:22 ` Philippe Gerum 2006-11-15 22:36 ` Jan Kiszka @ 2006-11-15 22:44 ` Philippe Gerum 1 sibling, 0 replies; 16+ messages in thread From: Philippe Gerum @ 2006-11-15 22:44 UTC (permalink / raw) To: Jan Kiszka; +Cc: xenomai On Wed, 2006-11-15 at 23:22 +0100, Philippe Gerum wrote: > On Wed, 2006-11-15 at 22:01 +0100, Jan Kiszka wrote: > > > /me unfortunately failed to reproduce your problem here. Instead, I > > found a regression in SVN head - different story for a different thread. > > > > It's reproducible here. This bug triggers if you leave enough time > between queue creation and deletion for Linux to deal with its usual > business, like running workqueues... Additionally, this bug would not > trigger with different queue names passed to the creation routines. It > seems to be caused by out-of-sequence create/delete requests of /proc > entries relayed to the proc_fs subsystem, which does not perform any > sanity checks on the data it is submitted. > Mm, ok, got it. It's indeed an out-of-sequence issue. Will fix. -- Philippe. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-help] Kernel crash during queue create/destroy 2006-11-15 14:44 ` Stephan Zimmermann 2006-11-15 21:01 ` Jan Kiszka @ 2006-11-16 11:57 ` Philippe Gerum 2006-11-16 12:59 ` Stephan Zimmermann 2006-11-16 15:35 ` Stephan Zimmermann 1 sibling, 2 replies; 16+ messages in thread From: Philippe Gerum @ 2006-11-16 11:57 UTC (permalink / raw) To: Stephan Zimmermann; +Cc: xenomai On Wed, 2006-11-15 at 15:44 +0100, Stephan Zimmermann wrote: > Am Mittwoch, 15. November 2006 14:19 schrieb Dmitry Adamushko: > > Hello, > > > > I got some trouble with the native skin and queues, when creating / > > deleting > > > > > queues, my Kernel sometimes (actually very often...) crashes, leading to > > > a frozen system, with my Xenomai program continuing until it returns. I > > > tried > > > to isolate / reproduce the problem, which lead me to the following > > > demo-code. > > [...] Cannot test it yet, but could you try out this patch? TIA, --- ksrc/nucleus/registry.c (revision 1838) +++ ksrc/nucleus/registry.c (working copy) @@ -65,10 +65,8 @@ static void registry_proc_schedule(void *cookie); -static xnqueue_t registry_obj_exportq; /* Objects waiting for /proc export. */ +static xnqueue_t registry_obj_procq; /* Objects waiting for /proc handling. */ -static xnqueue_t registry_obj_unexportq; /* Objects waiting for /proc unexport. */ - #ifndef CONFIG_PREEMPT_RT static DECLARE_WORK(registry_proc_work, ®istry_proc_callback, NULL); #endif /* !CONFIG_PREEMPT_RT */ @@ -106,8 +104,7 @@ return -ENOMEM; } - initq(®istry_obj_exportq); - initq(®istry_obj_unexportq); + initq(®istry_obj_procq); #endif /* CONFIG_XENO_EXPORT_REGISTRY */ initq(®istry_obj_freeq); @@ -274,16 +271,20 @@ xnlock_get_irqsave(&nklock, s); - while ((holder = getq(®istry_obj_exportq)) != NULL) { + while ((holder = getq(®istry_obj_procq)) != NULL) { object = link2xnobj(holder); pnode = object->pnode; type = pnode->type; + dir = pnode->dir; + rdir = pnode->root->dir; root = pnode->root->name; + + if (object->proc != XNOBJECT_PROC_RESERVED1) + goto unexport; + ++pnode->entries; object->proc = XNOBJECT_PROC_RESERVED2; appendq(®istry_obj_busyq, holder); - dir = pnode->dir; - rdir = pnode->root->dir; xnlock_put_irqrestore(&nklock, s); @@ -334,19 +335,14 @@ object->pnode = NULL; --pnode->entries; } - } - while ((holder = getq(®istry_obj_unexportq)) != NULL) { - object = link2xnobj(holder); - pnode = object->pnode; - object->pnode = NULL; + continue; + + unexport: + entries = --pnode->entries; entry = object->proc; object->proc = NULL; - type = pnode->type; - dir = pnode->dir; - rdir = pnode->root->dir; - root = pnode->root->name; - entries = --pnode->entries; + object->pnode = NULL; if (entries <= 0) { pnode->dir = NULL; @@ -398,7 +394,7 @@ object->proc = XNOBJECT_PROC_RESERVED1; object->pnode = pnode; removeq(®istry_obj_busyq, &object->link); - appendq(®istry_obj_exportq, &object->link); + appendq(®istry_obj_procq, &object->link); rthal_apc_schedule(registry_proc_apc); } @@ -406,13 +402,13 @@ { if (object->proc != XNOBJECT_PROC_RESERVED1) { removeq(®istry_obj_busyq, &object->link); - appendq(®istry_obj_unexportq, &object->link); + appendq(®istry_obj_procq, &object->link); rthal_apc_schedule(registry_proc_apc); } else { /* Unexporting before the lower stage has had a chance to export. Move back the object to the busyq just like if no export had been requested. */ - removeq(®istry_obj_exportq, &object->link); + removeq(®istry_obj_procq, &object->link); appendq(®istry_obj_busyq, &object->link); object->pnode = NULL; object->proc = NULL; -- Philippe. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-help] Kernel crash during queue create/destroy 2006-11-16 11:57 ` Philippe Gerum @ 2006-11-16 12:59 ` Stephan Zimmermann 2006-11-16 13:26 ` Philippe Gerum 2006-11-16 15:35 ` Stephan Zimmermann 1 sibling, 1 reply; 16+ messages in thread From: Stephan Zimmermann @ 2006-11-16 12:59 UTC (permalink / raw) To: xenomai Am Donnerstag, 16. November 2006 12:57 schrieb Philippe Gerum: > On Wed, 2006-11-15 at 15:44 +0100, Stephan Zimmermann wrote: > > Am Mittwoch, 15. November 2006 14:19 schrieb Dmitry Adamushko: > > > Hello, > > > > > > I got some trouble with the native skin and queues, when creating / > > > deleting > > > > > > > queues, my Kernel sometimes (actually very often...) crashes, leading > > > > to a frozen system, with my Xenomai program continuing until it > > > > returns. I tried > > > > to isolate / reproduce the problem, which lead me to the following > > > > demo-code. > > [...] > > Cannot test it yet, but could you try out this patch? TIA, This is the moment I have to confess I'm somehow not familiar enough with patch command.... I did download an fresh 1838 revision fron svn using "svn co -r 1838 svn://svn.gna.org/svn/xenomai/trunk xenomai", saved your patch to a file and tried to apply it from within the xenomai directory like this "patch -p0 < filename" (worked somehow last time), which leads me to the following output: <patch putput> patching file ksrc/nucleus/registry.c Hunk #1 FAILED at 65. Hunk #2 FAILED at 104. Hunk #3 FAILED at 271. Hunk #4 FAILED at 335. Hunk #5 FAILED at 394. patch unexpectedly ends in middle of line Hunk #6 FAILED at 402. 6 out of 6 hunks FAILED -- saving rejects to file ksrc/nucleus/registry.c.rej </patch output> sorry, don't know how to fix that... > --- ksrc/nucleus/registry.c (revision 1838) > +++ ksrc/nucleus/registry.c (working copy) > @@ -65,10 +65,8 @@ > > static void registry_proc_schedule(void *cookie); > > -static xnqueue_t registry_obj_exportq; /* Objects waiting for /proc > export. */ +static xnqueue_t registry_obj_procq; /* Objects waiting for > /proc handling. */ > > -static xnqueue_t registry_obj_unexportq; /* Objects waiting for /proc > unexport. */ - > #ifndef CONFIG_PREEMPT_RT > static DECLARE_WORK(registry_proc_work, ®istry_proc_callback, NULL); > #endif /* !CONFIG_PREEMPT_RT */ > @@ -106,8 +104,7 @@ > return -ENOMEM; > } > > - initq(®istry_obj_exportq); > - initq(®istry_obj_unexportq); > + initq(®istry_obj_procq); > #endif /* CONFIG_XENO_EXPORT_REGISTRY */ > > initq(®istry_obj_freeq); > @@ -274,16 +271,20 @@ > > xnlock_get_irqsave(&nklock, s); > > - while ((holder = getq(®istry_obj_exportq)) != NULL) { > + while ((holder = getq(®istry_obj_procq)) != NULL) { > object = link2xnobj(holder); > pnode = object->pnode; > type = pnode->type; > + dir = pnode->dir; > + rdir = pnode->root->dir; > root = pnode->root->name; > + > + if (object->proc != XNOBJECT_PROC_RESERVED1) > + goto unexport; > + > ++pnode->entries; > object->proc = XNOBJECT_PROC_RESERVED2; > appendq(®istry_obj_busyq, holder); > - dir = pnode->dir; > - rdir = pnode->root->dir; > > xnlock_put_irqrestore(&nklock, s); > > @@ -334,19 +335,14 @@ > object->pnode = NULL; > --pnode->entries; > } > - } > > - while ((holder = getq(®istry_obj_unexportq)) != NULL) { > - object = link2xnobj(holder); > - pnode = object->pnode; > - object->pnode = NULL; > + continue; > + > + unexport: > + entries = --pnode->entries; > entry = object->proc; > object->proc = NULL; > - type = pnode->type; > - dir = pnode->dir; > - rdir = pnode->root->dir; > - root = pnode->root->name; > - entries = --pnode->entries; > + object->pnode = NULL; > > if (entries <= 0) { > pnode->dir = NULL; > @@ -398,7 +394,7 @@ > object->proc = XNOBJECT_PROC_RESERVED1; > object->pnode = pnode; > removeq(®istry_obj_busyq, &object->link); > - appendq(®istry_obj_exportq, &object->link); > + appendq(®istry_obj_procq, &object->link); > rthal_apc_schedule(registry_proc_apc); > } > > @@ -406,13 +402,13 @@ > { > if (object->proc != XNOBJECT_PROC_RESERVED1) { > removeq(®istry_obj_busyq, &object->link); > - appendq(®istry_obj_unexportq, &object->link); > + appendq(®istry_obj_procq, &object->link); > rthal_apc_schedule(registry_proc_apc); > } else { > /* Unexporting before the lower stage has had a chance to > export. Move back the object to the busyq just like if no > export had been requested. */ > - removeq(®istry_obj_exportq, &object->link); > + removeq(®istry_obj_procq, &object->link); > appendq(®istry_obj_busyq, &object->link); > object->pnode = NULL; > object->proc = NULL; ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-help] Kernel crash during queue create/destroy 2006-11-16 12:59 ` Stephan Zimmermann @ 2006-11-16 13:26 ` Philippe Gerum 0 siblings, 0 replies; 16+ messages in thread From: Philippe Gerum @ 2006-11-16 13:26 UTC (permalink / raw) To: Stephan Zimmermann; +Cc: xenomai On Thu, 2006-11-16 at 13:59 +0100, Stephan Zimmermann wrote: > Am Donnerstag, 16. November 2006 12:57 schrieb Philippe Gerum: > > On Wed, 2006-11-15 at 15:44 +0100, Stephan Zimmermann wrote: > > > Am Mittwoch, 15. November 2006 14:19 schrieb Dmitry Adamushko: > > > > Hello, > > > > > > > > I got some trouble with the native skin and queues, when creating / > > > > deleting > > > > > > > > > queues, my Kernel sometimes (actually very often...) crashes, leading > > > > > to a frozen system, with my Xenomai program continuing until it > > > > > returns. I tried > > > > > to isolate / reproduce the problem, which lead me to the following > > > > > demo-code. > > > > [...] > > > > Cannot test it yet, but could you try out this patch? TIA, > > This is the moment I have to confess I'm somehow not familiar enough with > patch command.... > > I did download an fresh 1838 revision fron svn using "svn co -r 1838 > svn://svn.gna.org/svn/xenomai/trunk xenomai", saved your patch to a file and > tried to apply it from within the xenomai directory like this "patch -p0 < > filename" (worked somehow last time), which leads me to the following output: > <patch putput> > patching file ksrc/nucleus/registry.c > Hunk #1 FAILED at 65. > Hunk #2 FAILED at 104. > Hunk #3 FAILED at 271. > Hunk #4 FAILED at 335. > Hunk #5 FAILED at 394. > patch unexpectedly ends in middle of line > Hunk #6 FAILED at 402. > 6 out of 6 hunks FAILED -- saving rejects to file ksrc/nucleus/registry.c.rej > </patch output> > > sorry, don't know how to fix that... > The paste© you did from the mail to get the patch code likely failed, adding spurious linebreaks and such. Try asking your mail client to write the mail to a file, remove the useless text, then apply the patch from this file. patch -p0, as you did, is correct. > > --- ksrc/nucleus/registry.c (revision 1838) > > +++ ksrc/nucleus/registry.c (working copy) > > @@ -65,10 +65,8 @@ > > > > static void registry_proc_schedule(void *cookie); > > > > -static xnqueue_t registry_obj_exportq; /* Objects waiting for /proc > > export. */ +static xnqueue_t registry_obj_procq; /* Objects waiting for > > /proc handling. */ > > > > -static xnqueue_t registry_obj_unexportq; /* Objects waiting for /proc > > unexport. */ - > > #ifndef CONFIG_PREEMPT_RT > > static DECLARE_WORK(registry_proc_work, ®istry_proc_callback, NULL); > > #endif /* !CONFIG_PREEMPT_RT */ > > @@ -106,8 +104,7 @@ > > return -ENOMEM; > > } > > > > - initq(®istry_obj_exportq); > > - initq(®istry_obj_unexportq); > > + initq(®istry_obj_procq); > > #endif /* CONFIG_XENO_EXPORT_REGISTRY */ > > > > initq(®istry_obj_freeq); > > @@ -274,16 +271,20 @@ > > > > xnlock_get_irqsave(&nklock, s); > > > > - while ((holder = getq(®istry_obj_exportq)) != NULL) { > > + while ((holder = getq(®istry_obj_procq)) != NULL) { > > object = link2xnobj(holder); > > pnode = object->pnode; > > type = pnode->type; > > + dir = pnode->dir; > > + rdir = pnode->root->dir; > > root = pnode->root->name; > > + > > + if (object->proc != XNOBJECT_PROC_RESERVED1) > > + goto unexport; > > + > > ++pnode->entries; > > object->proc = XNOBJECT_PROC_RESERVED2; > > appendq(®istry_obj_busyq, holder); > > - dir = pnode->dir; > > - rdir = pnode->root->dir; > > > > xnlock_put_irqrestore(&nklock, s); > > > > @@ -334,19 +335,14 @@ > > object->pnode = NULL; > > --pnode->entries; > > } > > - } > > > > - while ((holder = getq(®istry_obj_unexportq)) != NULL) { > > - object = link2xnobj(holder); > > - pnode = object->pnode; > > - object->pnode = NULL; > > + continue; > > + > > + unexport: > > + entries = --pnode->entries; > > entry = object->proc; > > object->proc = NULL; > > - type = pnode->type; > > - dir = pnode->dir; > > - rdir = pnode->root->dir; > > - root = pnode->root->name; > > - entries = --pnode->entries; > > + object->pnode = NULL; > > > > if (entries <= 0) { > > pnode->dir = NULL; > > @@ -398,7 +394,7 @@ > > object->proc = XNOBJECT_PROC_RESERVED1; > > object->pnode = pnode; > > removeq(®istry_obj_busyq, &object->link); > > - appendq(®istry_obj_exportq, &object->link); > > + appendq(®istry_obj_procq, &object->link); > > rthal_apc_schedule(registry_proc_apc); > > } > > > > @@ -406,13 +402,13 @@ > > { > > if (object->proc != XNOBJECT_PROC_RESERVED1) { > > removeq(®istry_obj_busyq, &object->link); > > - appendq(®istry_obj_unexportq, &object->link); > > + appendq(®istry_obj_procq, &object->link); > > rthal_apc_schedule(registry_proc_apc); > > } else { > > /* Unexporting before the lower stage has had a chance to > > export. Move back the object to the busyq just like if no > > export had been requested. */ > > - removeq(®istry_obj_exportq, &object->link); > > + removeq(®istry_obj_procq, &object->link); > > appendq(®istry_obj_busyq, &object->link); > > object->pnode = NULL; > > object->proc = NULL; > > _______________________________________________ > Xenomai-help mailing list > Xenomai-help@domain.hid > https://mail.gna.org/listinfo/xenomai-help -- Philippe. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-help] Kernel crash during queue create/destroy 2006-11-16 11:57 ` Philippe Gerum 2006-11-16 12:59 ` Stephan Zimmermann @ 2006-11-16 15:35 ` Stephan Zimmermann 2006-11-16 15:44 ` Jan Kiszka 1 sibling, 1 reply; 16+ messages in thread From: Stephan Zimmermann @ 2006-11-16 15:35 UTC (permalink / raw) To: xenomai Am Donnerstag, 16. November 2006 12:57 schrieb Philippe Gerum: > On Wed, 2006-11-15 at 15:44 +0100, Stephan Zimmermann wrote: > > Am Mittwoch, 15. November 2006 14:19 schrieb Dmitry Adamushko: > > > Hello, > > > > > > I got some trouble with the native skin and queues, when creating / > > > deleting > > > > > > > queues, my Kernel sometimes (actually very often...) crashes, leading > > > > to a frozen system, with my Xenomai program continuing until it > > > > returns. I tried > > > > to isolate / reproduce the problem, which lead me to the following > > > > demo-code. > > [...] > > Cannot test it yet, but could you try out this patch? TIA, So, finally I managed to apply your patch, thanks for the hint :). After recompiling everything it seems to work an the first view. But I guess your patch is not the final solution (or we discover another problem here...). When I run the testprogram, everything looks fine, until I start to work with the X-Server. Starting X, logging into KDE or shutting down X sometimes leads to a syslog full of 'bad page' messages, as seen below. The system keeps responding to commands, I can exit my testprogram by pressing CTRL-C, X works as usual (just using it for typing this mail...). <syslog> Bad page state in process 'maintask' Nov 16 16:24:49 localhost kernel: page:c16d8b40 flags:0x80000400 mapping:00000000 mapcount:0 count:0 Nov 16 16:24:49 localhost kernel: Trying to fix it up, but a reboot is needed Nov 16 16:24:49 localhost kernel: Backtrace: Nov 16 16:24:49 localhost kernel: <c01572e3> bad_page+0x43/0x6c <c0157b32> free_hot_cold_page+0x60/0x14d Nov 16 16:24:49 localhost kernel: <c0165de5> __vunmap+0x91/0xc2 <c0165e33> vfree+0x1d/0x20 Nov 16 16:24:49 localhost kernel: <c0136ba5> xnheap_destroy_mapped+0x200/0x23b <c01513ab> rt_queue_delete+0xc2/0xe9 Nov 16 16:24:49 localhost kernel: <c014ddb4> __rt_queue_delete+0x50/0x77 <c0143fee> losyscall_event+0xa4/0x146 Nov 16 16:24:49 localhost kernel: <c0143f4a> losyscall_event+0x0/0x146 <c0134612> __ipipe_dispatch_event+0xa6/0x162 Nov 16 16:24:49 localhost kernel: <c010e91e> __ipipe_syscall_root+0x6d/0xdb <c0102e36> sysenter_past_esp+0x3b/0x67 Nov 16 16:24:49 localhost kernel: Bad page state in process 'maintask' Nov 16 16:24:49 localhost kernel: page:c16dd6c0 flags:0x80000400 mapping:00000000 mapcount:0 count:0 Nov 16 16:24:49 localhost kernel: Trying to fix it up, but a reboot is needed Nov 16 16:24:49 localhost kernel: Backtrace: Nov 16 16:24:49 localhost kernel: <c01572e3> bad_page+0x43/0x6c <c0157b32> free_hot_cold_page+0x60/0x14d Nov 16 16:24:49 localhost kernel: <c0165de5> __vunmap+0x91/0xc2 <c0165e33> vfree+0x1d/0x20 Nov 16 16:24:49 localhost kernel: <c0136ba5> xnheap_destroy_mapped+0x200/0x23b <c01513ab> rt_queue_delete+0xc2/0xe9 Nov 16 16:24:49 localhost kernel: <c014ddb4> __rt_queue_delete+0x50/0x77 <c0143fee> losyscall_event+0xa4/0x146 Nov 16 16:24:49 localhost kernel: <c0143f4a> losyscall_event+0x0/0x146 <c0134612> __ipipe_dispatch_event+0xa6/0x162 Nov 16 16:24:49 localhost kernel: <c010e91e> __ipipe_syscall_root+0x6d/0xdb <c0102e36> sysenter_past_esp+0x3b/0x67 Nov 16 16:24:49 localhost kernel: Bad page state in process 'maintask' Nov 16 16:24:49 localhost kernel: page:c16dd740 flags:0x80000400 mapping:00000000 mapcount:0 count:0 Nov 16 16:24:49 localhost kernel: Trying to fix it up, but a reboot is needed Nov 16 16:24:49 localhost kernel: Backtrace: Nov 16 16:24:49 localhost kernel: <c01572e3> bad_page+0x43/0x6c <c0157b32> free_hot_cold_page+0x60/0x14d Nov 16 16:24:49 localhost kernel: <c0165de5> __vunmap+0x91/0xc2 <c0165e33> vfree+0x1d/0x20 Nov 16 16:24:49 localhost kernel: <c0136ba5> xnheap_destroy_mapped+0x200/0x23b <c01513ab> rt_queue_delete+0xc2/0xe9 Nov 16 16:24:49 localhost kernel: <c014ddb4> __rt_queue_delete+0x50/0x77 <c0143fee> losyscall_event+0xa4/0x146 Nov 16 16:24:49 localhost kernel: <c0143f4a> losyscall_event+0x0/0x146 <c0134612> __ipipe_dispatch_event+0xa6/0x162 Nov 16 16:24:49 localhost kernel: <c010e91e> __ipipe_syscall_root+0x6d/0xdb <c0102e36> sysenter_past_esp+0x3b/0x67 Nov 16 16:24:49 localhost kernel: Bad page state in process 'maintask' Nov 16 16:24:49 localhost kernel: page:c16dd760 flags:0x80000400 mapping:00000000 mapcount:0 count:0 Nov 16 16:24:49 localhost kernel: Trying to fix it up, but a reboot is needed Nov 16 16:24:49 localhost kernel: Backtrace: Nov 16 16:24:49 localhost kernel: <c01572e3> bad_page+0x43/0x6c <c0157b32> free_hot_cold_page+0x60/0x14d Nov 16 16:24:49 localhost kernel: <c0165de5> __vunmap+0x91/0xc2 <c0165e33> vfree+0x1d/0x20 Nov 16 16:24:49 localhost kernel: <c0136ba5> xnheap_destroy_mapped+0x200/0x23b <c01513ab> rt_queue_delete+0xc2/0xe9 Nov 16 16:24:49 localhost kernel: <c014ddb4> __rt_queue_delete+0x50/0x77 <c0143fee> losyscall_event+0xa4/0x146 Nov 16 16:24:49 localhost kernel: <c0143f4a> losyscall_event+0x0/0x146 <c0134612> __ipipe_dispatch_event+0xa6/0x162 Nov 16 16:24:49 localhost kernel: <c010e91e> __ipipe_syscall_root+0x6d/0xdb <c0102e36> sysenter_past_esp+0x3b/0x67 ... many more here... </syslog> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-help] Kernel crash during queue create/destroy 2006-11-16 15:35 ` Stephan Zimmermann @ 2006-11-16 15:44 ` Jan Kiszka 2006-11-17 12:38 ` Stephan Zimmermann 0 siblings, 1 reply; 16+ messages in thread From: Jan Kiszka @ 2006-11-16 15:44 UTC (permalink / raw) To: Stephan Zimmermann; +Cc: xenomai [-- Attachment #1: Type: text/plain, Size: 1538 bytes --] Stephan Zimmermann wrote: > Am Donnerstag, 16. November 2006 12:57 schrieb Philippe Gerum: >> On Wed, 2006-11-15 at 15:44 +0100, Stephan Zimmermann wrote: >>> Am Mittwoch, 15. November 2006 14:19 schrieb Dmitry Adamushko: >>>> Hello, >>>> >>>> I got some trouble with the native skin and queues, when creating / >>>> deleting >>>> >>>>> queues, my Kernel sometimes (actually very often...) crashes, leading >>>>> to a frozen system, with my Xenomai program continuing until it >>>>> returns. I tried >>>>> to isolate / reproduce the problem, which lead me to the following >>>>> demo-code. >> [...] >> >> Cannot test it yet, but could you try out this patch? TIA, > > So, finally I managed to apply your patch, thanks for the hint :). After > recompiling everything it seems to work an the first view. But I guess your > patch is not the final solution (or we discover another problem here...). > When I run the testprogram, everything looks fine, until I start to work with > the X-Server. Starting X, logging into KDE or shutting down X sometimes leads > to a syslog full of 'bad page' messages, as seen below. The system keeps > responding to commands, I can exit my testprogram by pressing CTRL-C, X works > as usual (just using it for typing this mail...). See last night's thread: this issue was due to my patch fixing too much of an regression in SVN trunk. You should upgrade to head (#1842 by now) and try again. "svn up" should work fine for this, merging all changes together. Jan [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 250 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-help] Kernel crash during queue create/destroy 2006-11-16 15:44 ` Jan Kiszka @ 2006-11-17 12:38 ` Stephan Zimmermann 0 siblings, 0 replies; 16+ messages in thread From: Stephan Zimmermann @ 2006-11-17 12:38 UTC (permalink / raw) To: xenomai Am Donnerstag, 16. November 2006 16:44 schrieb Jan Kiszka: > Stephan Zimmermann wrote: > > Am Donnerstag, 16. November 2006 12:57 schrieb Philippe Gerum: > >> On Wed, 2006-11-15 at 15:44 +0100, Stephan Zimmermann wrote: > >>> Am Mittwoch, 15. November 2006 14:19 schrieb Dmitry Adamushko: > >>>> Hello, > >>>> > >>>> I got some trouble with the native skin and queues, when creating / > >>>> deleting > >>>> > >>>>> queues, my Kernel sometimes (actually very often...) crashes, leading > >>>>> to a frozen system, with my Xenomai program continuing until it > >>>>> returns. I tried > >>>>> to isolate / reproduce the problem, which lead me to the following > >>>>> demo-code. > >> > >> [...] > >> > >> Cannot test it yet, but could you try out this patch? TIA, > > > > So, finally I managed to apply your patch, thanks for the hint :). After > > recompiling everything it seems to work an the first view. But I guess > > your patch is not the final solution (or we discover another problem > > here...). When I run the testprogram, everything looks fine, until I > > start to work with the X-Server. Starting X, logging into KDE or shutting > > down X sometimes leads to a syslog full of 'bad page' messages, as seen > > below. The system keeps responding to commands, I can exit my testprogram > > by pressing CTRL-C, X works as usual (just using it for typing this > > mail...). > > See last night's thread: this issue was due to my patch fixing too much > of an regression in SVN trunk. You should upgrade to head (#1842 by now) > and try again. "svn up" should work fine for this, merging all changes > together. You're right, upgraded to head and recompiled it. Seems to work now. Many thanks for the fast response on this list. Stephan ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2006-11-17 12:38 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-11-15 10:21 [Xenomai-help] Kernel crash during queue create/destroy Stephan Zimmermann 2006-11-15 13:19 ` Dmitry Adamushko 2006-11-15 14:44 ` Stephan Zimmermann 2006-11-15 21:01 ` Jan Kiszka 2006-11-15 22:22 ` Philippe Gerum 2006-11-15 22:36 ` Jan Kiszka 2006-11-15 22:43 ` Jan Kiszka 2006-11-15 22:46 ` Philippe Gerum 2006-11-15 22:52 ` Jan Kiszka 2006-11-15 22:44 ` Philippe Gerum 2006-11-16 11:57 ` Philippe Gerum 2006-11-16 12:59 ` Stephan Zimmermann 2006-11-16 13:26 ` Philippe Gerum 2006-11-16 15:35 ` Stephan Zimmermann 2006-11-16 15:44 ` Jan Kiszka 2006-11-17 12:38 ` Stephan Zimmermann
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.