Re: rwl manipulation fails when
Shahbaz Youssefi <[email protected]> Thu, 1 Dec 2016 10:38:35 -0500
| Newsgroups | gmane.linux.real-time.rtai |
|---|---|
| Message-ID | <CALeOzZ_aiqhA==xdYg+ETRgH6anFjfM+NNLgZmhikBOFrSkbTw@mail.gmail.com> |
Is your thread a realtime thread? You can't use the lock unless your thread is realtime (not necessarily hard realtime). You would rt_task_init* functions are your friends. On Thu, Dec 1, 2016 at 3:29 AM, Yamato Kira <[email protected]> wrote: > Hi, everyone > > > I am trying to use the RWL to achieve a synchronization of data processing > on LinuxCNC which has an RTAI core of 3.9. > > > The RWL I used can be initialized correctly in a thread, but it caused a > kernel error when I try to lock it or unlock it. Have you ever meet this > problem before? Or can you help me to fix it? 3Q~ > > > The RWL codes I used read as: > > > ************************************************** > > RWL * rt_RWL_01; > > ...... > > rt_RWL_01 = rt_rwl_init(nam2num("RWL1")); > if(0==rt_RWL_01){ > printf("RWL Init Fails %d\n",rt_RWL_01); > }else{ > printf("RWL Init Succeeds %d\n",rt_RWL_01); > } > ...... > while(1){ > ...... > printf("Before RWL\n"); > rt_rwl_wrlock(rt_RWL_01); > //rt_rwl_unlock(rt_RWL_01); > printf("After RWL\n"); > } > ************************************************** > > and the dmesg command gives: > > kern :alert : [ 2855.372788] BUG: unable to handle kernel NULL pointer > dereference at 0000007c > kern :alert : [ 2855.372793] IP: [<f86f2760>] rt_rwl_wrlock+0x30/0x200 > [rtai_sched] > kern :warn : [ 2855.372798] *pde = 00000000 > kern :warn : [ 2855.372801] Oops: 0000 [#2] PREEMPT SMP > kern :warn : [ 2855.372804] Modules linked in: rtai_sched(O) rtai_hal(O) > parport_pc ppdev lp parport rfcomm bnep uinput nfsd nfs nfs_acl auth_rpcgss > fscache lockd sunrpc loop snd_hda_codec_realtek btusb bluetooth uvcvideo > snd_hda_intel snd_hda_codec videobuf2_vmalloc videobuf2_memops > videobuf2_core videodev media ideapad_laptop i2c_core sparse_keymap > snd_hwdep snd_pcm coretemp rfkill snd_page_alloc evdev serio_raw snd_seq > snd_seq_device snd_timer snd crc32c_intel aesni_intel aes_i586 aes_generic > battery ac cryptd power_supply wmi soundcore video button ext4 crc16 jbd2 > mbcache usbhid hid sg sd_mod crc_t10dif microcode xhci_hcd ahci libahci > r8169 mii libata scsi_mod ehci_hcd fan thermal_sys usbcore usb_common [last > unloaded: psmouse] > kern :warn : [ 2855.372859] > kern :warn : [ 2855.372862] Pid: 4345, comm: RTAI1 Tainted: G D > O 3.4-9-rtai-686-pae #1 LENOVO 80HR/ZHAOYANG E40-80 > kern :warn : [ 2855.372866] EIP: 0060:[<f86f2760>] EFLAGS: 00213002 CPU: > 1 > kern :warn : [ 2855.372870] EIP is at rt_rwl_wrlock+0x30/0x200 > [rtai_sched] > kern :warn : [ 2855.372872] EAX: 00000200 EBX: 00000000 ECX: f8702c00 > EDX: 00000000 > kern :warn : [ 2855.372874] ESI: 00000030 EDI: 00000201 EBP: f2b19f70 > ESP: f2b19ee4 > kern :warn : [ 2855.372876] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 > kern :warn : [ 2855.372877] CR0: 80050033 CR2: 0000007c CR3: 36a9f000 > CR4: 001407d0 > kern :warn : [ 2855.372879] DR0: 00000000 DR1: 00000000 DR2: 00000000 > DR3: 00000000 > kern :warn : [ 2855.372881] DR6: fffe0ff0 DR7: 00000400 > kern :emerg : [ 2855.372883] Process RTAI1 (pid: 4345, ti=f2b18000 > task=f2b4ad80 task.ti=f2b18000) > kern :emerg : [ 2855.372885] I-pipe domain Linux > kern :emerg : [ 2855.372886] Stack: > kern :warn : [ 2855.372887] f77c8e00 d17a140a 00000298 1dcd6500 > f8766220 f86f2730 b74ea324 f86e4375 > kern :warn : [ 2855.372894] 00000000 b76514e0 00000000 f8766220 > 003d0f00 b74ea388 08049ab9 00000000 > kern :warn : [ 2855.372901] 00000001 c1053a4d f77c8e00 f77c8e00 > f77c8e00 f2b4ad80 f2b4af40 00000001 > kern :emerg : [ 2855.372908] Call Trace: > kern :warn : [ 2855.372913] [<f86f2730>] ? rt_rwl_rdlock+0x210/0x210 > [rtai_sched] > kern :warn : [ 2855.372917] [<f86e4375>] ? > handle_lxrt_request+0xa5/0xaf0 [rtai_sched] > kern :warn : [ 2855.372922] [<c1053a4d>] ? > pick_next_task_fair+0x4d/0x110 > kern :warn : [ 2855.372925] [<c1362a62>] ? __schedule+0x132/0x400 > kern :warn : [ 2855.372930] [<f86e4e18>] ? rtai_lxrt_invoke+0x58/0x180 > [rtai_sched] > kern :warn : [ 2855.372934] [<f86e3945>] ? lxrt_intercept_syscall+0x75/0x100 > [rtai_sched] > kern :warn : [ 2855.372938] [<c10e851b>] ? sys_write+0x5b/0x70 > kern :warn : [ 2855.372941] [<c10979ec>] ? > __ipipe_notify_kevent+0xc/0x10 > kern :warn : [ 2855.372944] [<c101af46>] ? > __ipipe_syscall_root+0x36/0xd0 > kern :warn : [ 2855.372947] [<c1368bff>] ? sysenter_past_esp+0x5c/0x73 > kern :emerg : [ 2855.372948] Code: 10 8b 5c 24 20 9c 58 fa 25 00 02 00 > 00 64 8b 15 10 e7 4f c1 f0 0f ab 15 90 d1 72 f8 19 d2 85 d2 0f 84 ed 00 00 > 00 89 c7 8d 73 30 <8b> 43 7c 85 c0 0f 84 85 00 00 00 89 34 24 e8 4d e9 ff > ff 3d 00 > kern :emerg : [ 2855.372991] EIP: [<f86f2760>] rt_rwl_wrlock+0x30/0x200 > [rtai_sched] SS:ESP 0068:f2b19ee4 > kern :warn : [ 2855.372996] CR2: 000000000000007c > kern :warn : [ 2855.372999] ---[ end trace 61a57933bf2bc264 ]--- > kern :err : [ 2855.373002] BUG: Unhandled exception over domain RTAI > at 0xf86f2760 - switching to ROOT > kern :warn : [ 2855.373004] Pid: 4345, comm: RTAI1 Tainted: G D > O 3.4-9-rtai-686-pae #1 > kern :warn : [ 2855.373005] Call Trace: > kern :warn : [ 2855.373007] [<c101adb0>] ? __ipipe_handle_exception+ > 0x220/0x230 > kern :warn : [ 2855.373009] [<f86f2760>] ? rt_rwl_wrlock+0x30/0x200 > [rtai_sched] > kern :warn : [ 2855.373011] [<c13647f0>] ? error_code+0x6c/0x7c > kern :warn : [ 2855.373013] [<c104007b>] ? __alloc_workqueue_key+0x36b/ > 0x3e0 > kern :warn : [ 2855.373014] [<f86f2760>] ? rt_rwl_wrlock+0x30/0x200 > [rtai_sched] > kern :warn : [ 2855.373016] [<f86f2730>] ? rt_rwl_rdlock+0x210/0x210 > [rtai_sched] > kern :warn : [ 2855.373018] [<f86e4375>] ? > handle_lxrt_request+0xa5/0xaf0 [rtai_sched] > kern :warn : [ 2855.373020] [<c1053a4d>] ? > pick_next_task_fair+0x4d/0x110 > kern :warn : [ 2855.373022] [<c1362a62>] ? __schedule+0x132/0x400 > kern :warn : [ 2855.373024] [<f86e4e18>] ? rtai_lxrt_invoke+0x58/0x180 > [rtai_sched] > kern :warn : [ 2855.373026] [<f86e3945>] ? lxrt_intercept_syscall+0x75/0x100 > [rtai_sched] > kern :warn : [ 2855.373028] [<c10e851b>] ? sys_write+0x5b/0x70 > kern :warn : [ 2855.373030] [<c10979ec>] ? > __ipipe_notify_kevent+0xc/0x10 > kern :warn : [ 2855.373032] [<c101af46>] ? > __ipipe_syscall_root+0x36/0xd0 > kern :warn : [ 2855.373033] [<c1368bff>] ? sysenter_past_esp+0x5c/0x73 > kern :info : [ 2855.373036] note: RTAI1[4345] exited with preempt_count 2 > kern :warn : [ 2855.373097] LXRT releases PID 4345 (ID: RTAI1). > kern :warn : [ 3065.563237] LXRT releases PID 4346 (ID: RTAI1). > kern :warn : [ 3065.572713] LXRT releases PID 4344 (ID: RTAI1). > > ************************************************** > > > _______________________________________________ > Rtai mailing list > [email protected] > https://mail.rtai.org/cgi-bin/mailman/listinfo/rtai > _______________________________________________ Rtai mailing list [email protected] https://mail.rtai.org/cgi-bin/mailman/listinfo/rtai