[EMAIL PROTECTED] wrote:
Gilles Chanteperdrix [mailto:[EMAIL PROTECTED] :
Ok. Now the question remains: does this problem still exist
with version
2.2.2 ? The heaps overhead computations have changed recently.
Good news. I can“t reproduce the "seg. fault" with 2.2.2 although I tried hard (restarted at least 20 times). Obviously the new "heap overhead computations" eliminated the problem.
Wolgang could you be so nice to try to reproduce the problem with 2.2.2, just to be sure ?
I ran heap.c plenty of times on my MPC5200 setup under Linux 2.4.25 and
Xenomai (head of SVN) and was unable to reproduce the segfault error
:-). But I got an Oops when I aborted the program via ^C _once_ after
reboot. All subsequent executions worked fine. I have attached the trace
and a manual backtrace. Seems like a crash in strlen() called from
remove_proc_entry().
Wolfgang.
Many thanks to everybody who spend his precious time
Roderik
P.s.: with 2.2.2 I noticed, that in /proc/xenomai/interfaces vxWorks is not
listed although I compiled the kernel with support for vxworks. Is this o.K. ?
bash-2.05b# ./heap
Start Heap
root_thread_init :
timer startedt
display task created
root_thread_init beendet
Available Memory 45674496 (Pagesize 4096)
heap 0 of size 16000000 created
Heap 0 allocated size 16000000
heap 1 of size 16000000 created
Heap 1 allocated size 16000000
heap 2 of size 16000000 created
Heap 2 allocated size 16000000
__alloc_pages: 0-order allocation failed (gfp=0x1f2/0)
Available Memory after allocation 8888320
__alloc_pages: 0-order allocation failed (gfp=0x1f2/0)
Heap 3 created with size 4172800
Heap 3 allocated size 4172800
Memory allocated in total : 52172800
1 loops done
11 loops done
UDP->root_thread_exit
*** long delay ***
Machine check in kernel mode.
Caused by (from SRR1=41000): Transfer error ack signal
Oops: machine check, sig: 7
NIP: C00117A0 XER: 20000000 LR: C0060018 SP: C03D7F00 REGS: c03d7e50 TRAP: 0200 Not tainted
MSR: 00041000 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 00
TASK = c03d6000[2] 'keventd' Last syscall: -1
last math 00000000 last altivec 00000000
GPR00: 00000000 C03D7F00 C03D6000 F0927EB7 F0927EB7 00000008 00000000 C024540C
GPR08: 00000000 C02042B4 C01F0000 C01DBC80 84044442 1001AA80 03FBA000 00000000
GPR16: 00000001 00000001 FFFFFFFF 007FFF00 003FF000 C0240000 C0240000 C0210000
GPR24: C02453CC C31919C0 C01C5DB8 C01C6C30 C3E1A420 C3E1A620 C01E731C 22004042
Call backtrace:
C00232F4 C01115E4 C0019A34 C0022E44 C0008598
UDP->root_thread_exit
UDP->root_thread_exit
(gdb) l *0xC00117A0
No source file for address 0xc00117a0. *** in strlen ***
(gdb) l *0xC00232F4
0xc00232f4 is in ipipe_unstall_pipeline_from (core.c:279).
274 else
275 pos = __ipipe_pipeline.next;
276
277 __ipipe_walk_pipeline(pos, cpuid);
278
279 if (__ipipe_pipeline_head_p(ipd))
280 local_irq_enable_hw();
281 else
282 ipipe_unlock_cpu(flags);
283 }
(gdb) l *0xC01115E4
0xc01115e4 is in registry_proc_callback (registry.c:369).
364
365 xnlock_put_irqrestore(&nklock, s);
366
367 remove_proc_entry(entry->name, dir);
368
369 if (entries <= 0) {
370 remove_proc_entry(type, rdir);
371
372 if (pnode->root->entries <= 0)
373 remove_proc_entry(root, registry_proc_root);
(gdb) l *0xC0019A34
0xc0019a34 is in __run_task_queue (softirq.c:357).
352 f = p->routine;
353 data = p->data;
354 wmb();
355 p->sync = 0;
356 if (f)
357 f(data);
358 }
359 }
360
361 static int ksoftirqd(void * __bind_cpu)
(gdb) l *0xC0022E44
0xc0022e44 is in context_thread (context.c:103).
98 if (TQ_ACTIVE(tq_context))
99 set_task_state(curtask, TASK_RUNNING);
100 schedule();
101 remove_wait_queue(&context_task_wq, &wait);
102 run_task_queue(&tq_context);
103 wake_up(&context_task_done);
104 if (signal_pending(curtask)) {
105 while (waitpid(-1, (unsigned int *)0, __WALL|WNOHANG) > 0)
106 ;
107 spin_lock_irq(&curtask->sigmask_lock);
(gdb) l *0xC0008598
No source file for address 0xc0008598. *** in arch_kernel_thread ***
(gdb) l *0xC0060018
0xc0060018 is in remove_proc_entry (generic.c:565).
560 int len;
561
562 if (!parent && xlate_proc_name(name, &parent, &fn) != 0)
563 goto out;
564 len = strlen(fn);
565 for (p = &parent->subdir; *p; p=&(*p)->next ) {
566 if (!proc_match(len, fn, *p))
567 continue;
568 de = *p;
569 *p = de->next;
(gdb)
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help