Hi,
we are porting our
application to the POSIX skin of Xenomai. We are using a 2.4.25 Denx based
Kernel with 4 days old Xenomai 2.3-devel svn trunk on a MPC5200B based custom
board. The application spawns 36 Threads, uses 265 mutexes and 22 condition
variables. We increased all numbers that can be set inside Xenomai kernel
config to 10x, just to be sure we are not blowing out Kernel limits
(Prinzip: Stange im Nebel).
The following output
of ksymoops will be done for the occuring oops:
Oops: kernel access
of bad area, sig: 11
NIP: C0012A00 XER: 20000000 LR: C00129DC SP: C9589E30 REGS: c9589d80 TRAP: 0300 Not tainted
Using defaults from ksymoops -t elf32-powerpc -a powerpc:common
MSR: 00009032 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c9588000[294] 'ApplicationExe' Last syscall: 285344299
last math c8020000 last altivec 00000000
GPR00: C00129DC C9589E30 C9588000 FFFFFFFF C0008878 C01F82C0 C9587FFF C01FCF48
GPR08: 003C62E0 C01FCF40 6C800000 CDE86268 00000000 1001A288 00000000 00000000
GPR16: 00000000 00000000 C0200000 C0240000 C0210000 C0200000 C0200000 C0210000
GPR24: 00000001 C0230000 C0260000 C0222420 CFE50000 00000000 00000000 C9589E30
Call backtrace:
C00129DC C011FB94 C0120F18 C0025FBC C000D638 C0005A3C 0FFD9F80
0FC4B888 0FC4B750 0FC0CF40 0FFD890C 0FF68FC0 0EE6C9A0
Warning (Oops_read): Code line not seen, dumping what data is available
NIP: C0012A00 XER: 20000000 LR: C00129DC SP: C9589E30 REGS: c9589d80 TRAP: 0300 Not tainted
Using defaults from ksymoops -t elf32-powerpc -a powerpc:common
MSR: 00009032 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c9588000[294] 'ApplicationExe' Last syscall: 285344299
last math c8020000 last altivec 00000000
GPR00: C00129DC C9589E30 C9588000 FFFFFFFF C0008878 C01F82C0 C9587FFF C01FCF48
GPR08: 003C62E0 C01FCF40 6C800000 CDE86268 00000000 1001A288 00000000 00000000
GPR16: 00000000 00000000 C0200000 C0240000 C0210000 C0200000 C0200000 C0210000
GPR24: 00000001 C0230000 C0260000 C0222420 CFE50000 00000000 00000000 C9589E30
Call backtrace:
C00129DC C011FB94 C0120F18 C0025FBC C000D638 C0005A3C 0FFD9F80
0FC4B888 0FC4B750 0FC0CF40 0FFD890C 0FF68FC0 0EE6C9A0
Warning (Oops_read): Code line not seen, dumping what data is available
>>NIP; c0012a00 <schedule+2a4/574> <=====
>>GPR0; c00129dc <schedule+280/574>
>>GPR4; c0008878 <_switch_to+5c/90>
>>GPR5; c01f82c0 <init_signals+3d4/504>
>>GPR7; c01fcf48 <ipipe_root+1008/2dc0>
>>GPR9; c01fcf40 <ipipe_root+1000/2dc0>
>>GPR18; c0200000 <pid_base_dentry_operations+4/18>
>>GPR19; c0240000 <read_buffers+b20/8000>
>>GPR20; c0210000 <__ksymtab_get_buffer_flushtime+0/8>
>>GPR21; c0200000 <pid_base_dentry_operations+4/18>
>>GPR22; c0200000 <pid_base_dentry_operations+4/18>
>>GPR23; c0210000 <__ksymtab_get_buffer_flushtime+0/8>
>>GPR25; c0230000 <exec_domains_lock+394/400>
>>GPR26; c0260000 <xnpipe_states+1630/9600>
>>GPR27; c0222420 <rtcan_init+4/4c>
>>GPR4; c0008878 <_switch_to+5c/90>
>>GPR5; c01f82c0 <init_signals+3d4/504>
>>GPR7; c01fcf48 <ipipe_root+1008/2dc0>
>>GPR9; c01fcf40 <ipipe_root+1000/2dc0>
>>GPR18; c0200000 <pid_base_dentry_operations+4/18>
>>GPR19; c0240000 <read_buffers+b20/8000>
>>GPR20; c0210000 <__ksymtab_get_buffer_flushtime+0/8>
>>GPR21; c0200000 <pid_base_dentry_operations+4/18>
>>GPR22; c0200000 <pid_base_dentry_operations+4/18>
>>GPR23; c0210000 <__ksymtab_get_buffer_flushtime+0/8>
>>GPR25; c0230000 <exec_domains_lock+394/400>
>>GPR26; c0260000 <xnpipe_states+1630/9600>
>>GPR27; c0222420 <rtcan_init+4/4c>
Trace; c00129dc <schedule+280/574>
Trace; c011fb94 <xnshadow_ppd_lookup_inner+12c/1d4>
Trace; c0120f18 <xnshadow_sys_bind+298/300>
Trace; c0025fbc <__ipipe_dispatch_event+b4/198>
Trace; c000d638 <__ipipe_syscall_root+44/e0>
Trace; c0005a3c <DoSyscall+1c/90>
Trace; 0ffd9f80 Before first symbol
Trace; 0fc4b888 Before first symbol
Trace; 0fc4b750 Before first symbol
Trace; 0fc0cf40 Before first symbol
Trace; 0ffd890c Before first symbol
Trace; 0ff68fc0 Before first symbol
Trace; 0ee6c9a0 Before first symbol
Trace; c011fb94 <xnshadow_ppd_lookup_inner+12c/1d4>
Trace; c0120f18 <xnshadow_sys_bind+298/300>
Trace; c0025fbc <__ipipe_dispatch_event+b4/198>
Trace; c000d638 <__ipipe_syscall_root+44/e0>
Trace; c0005a3c <DoSyscall+1c/90>
Trace; 0ffd9f80 Before first symbol
Trace; 0fc4b888 Before first symbol
Trace; 0fc4b750 Before first symbol
Trace; 0fc0cf40 Before first symbol
Trace; 0ffd890c Before first symbol
Trace; 0ff68fc0 Before first symbol
Trace; 0ee6c9a0 Before first symbol
The call right
before entering the system space traced down with a running gdb is
__wrap_clock_nanosleep().
It always happens
here. But when just testing this function alone in a cycle, no kernel oops
happens. The oops seems to be a correlation of different
events.
On the other side we
have a constant problem with clock_nanosleep() in that it always returns
after 1/4 of the supposed time.
I.e. calling
struct timespec t
t.tv_sec = 5;
t.tv_nsec = 0;
clock_nanosleep(CLOCK_REALTIME, 0, &t, NULL);
returns after 1
second and not 4.
Whereas
clock_gettime(CLOCK_REALTIME, &t) works correctly (i.e. the difference
of two timestamps taken before and after clock_nanosleep() with the above
settings results in a diff time of 1 sec). So somehow the external hardware
timer setup is incorrect or maybe frequencies ?
Any ideas
?
Regards,
Daniel.
_______________________________________________ Xenomai-help mailing list [email protected] https://mail.gna.org/listinfo/xenomai-help
