Speaking of rtpc, could there be a race condition when using a
rtdm_lock_t to synchronize between a linux thread and a xenomai thread?

/Jesper


On 2011-04-12 15:40, Jan Kiszka wrote:
> On 2011-04-12 15:31, Jesper Christensen wrote:
>   
>>  
>>
>> I have managed to print the stack of a faulting thread:
>>
>> Xenomai: suspending kernel thread b911f518 ('rtnet-rtpc') at
>> nip=0xb911f940, lr=0xb911f940, r1=0xaf2c4580 after exception #1792
>>
>> Xenomai: dumping stack at af2c4600
>> Xenomai: 0xaf2c45ec - 0xaf2c45fc:       00000000 af2c4600 8009a334
>> 00000000 00000000
>> Xenomai: 0xaf2c45d8 - 0xaf2c45e8:       00000000  0 00000000 00000000
>> 00000000
>> Xenomai: 0xaf2c45c4 - 0xaf2c45d4:       b911f518  0 00000000 af2c45f0
>> 8009a364
>> Xenomai: 0xaf2c45b0 - 0xaf2c45c0:       00000000  0 00000000 00000000
>> 00000000
>> Xenomai: 0xaf2c459c - 0xaf2c45ac:       00000000  0 00000000 b911f518
>> 8009a334
>> Xenomai: 0xaf2c4588 - 0xaf2c4598:       00000000 b911f4e0 af2c45d0
>> b911649c 00000000
>> Xenomai: 0xaf2c4574 - 0xaf2c4584:       805e3988 8000000 805a89f0
>> 00000001 b911f940
>> Xenomai: 0xaf2c4560 - 0xaf2c4570:       b911f940 20000000 22000022
>> b911ebb8 00000700
>> Xenomai: 0xaf2c454c - 0xaf2c455c:       805a89f0 b911f940 00029000
>> ffffffff 8009b2e4
>> Xenomai: 0xaf2c4538 - 0xaf2c4548:       00000000 b911ebb8 805e50c4
>> 805e3988 805a89f0
>> Xenomai: 0xaf2c4524 - 0xaf2c4534:       00100100 ffffffff 00000000
>> af2c4580 8000bf48
>> Xenomai: 0xaf2c4510 - 0xaf2c4520:       00000000  0 00000000 00000000
>> 00200200
>> Xenomai: 0xaf2c44fc - 0xaf2c450c:       805e3988 22000022 00000000
>> 00000000 00000000
>>
>> Manually decoded link register words:
>> ---------------------------------------------------------------------------------------------------------
>> 8009a334:
>> $ powerpc-linux-gnu-addr2line -e vmlinux 0x8009a334
>> linux-2.6.29.6/arch/powerpc/include/asm/xenomai/bits/pod.h:168
>>
>> 8009a364:
>> $ powerpc-linux-gnu-addr2line -e vmlinux 0x8009a364
>> linux-2.6.29.6/arch/powerpc/include/asm/xenomai/bits/pod.h:172
>>
>> b911649c:
>> $ powerpc-linux-gnu-addr2line -e
>> ../3rd_party/XM-Linux/rtnet_build/stack/rtnet.ko 0x249c
>> rtnet_build/stack/rtnet_rtpc.c:201
>>
>> 8000bf48:
>> $ powerpc-linux-gnu-addr2line -e vmlinux 0x8000bf48
>> linux-2.6.29.6/arch/powerpc/kernel/ipipe.c:429  
>> (ipipe_trigger_irq(unsigned irq) at local_irq_restore_hw(flags);)
>>
>> ---------------------------------------------------------------------------------------------------------
>>
>> Notice the "r1" register in the first line i assume should point to a
>> back chain word, but the value is 00000001 and the "link register" word
>> immediately after is b911f940 which points to:
>> # grep b911f940 /proc/kallsyms
>> b911f940 b pending_calls_lock   [rtnet]
>>
>>
>> I'm not sure of the significance of the stack frame after that one.
>>
>>     
> IIRC, you said that you are using rtnet-rtpc for a special use case.
> Given the fact that this interface very well documented and highly
> intuitive to use ;), I wouldn't be too surprised if you ran into a race
> or an invalid use case.
>
> Is the rtpc-using code part of your tarball? If so, can you break it out
> and explain on it how you use rtpc?
>
> Jan
>
>   


_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to