[etherlab-dev] wait_event() causes uninterruptible_sleep
nir.geller at servotronix.com
Wed Jan 29 11:31:15 CET 2020
we are working with etherlab's ethercat master and recently we've encountered a problem that is related to a non interruptible wait_event().
A multi-threaded user space app cyclically reads SDO from some ecat slave.
The user space app then crashes.
All the threads end besides the one that performs the SDO read:
1022 1022 TS - 0 19 0 0.0 Zl task_dead abcde <defunct>
1022 1202 RR 2 - 42 0 0.6 Dl ecrt_master_sdo_upload abcde1
This situation interferes with debugging the app, and prevents a core dump from being generated.
In master.c in ecrt_master_sdo_upload() I see an invoke of wait_event_interruptible() followed by an invoke of wait_event().
After changing wait_event() to wait_event_interruptible() the app can successfully crash, and it is now easier to debug.
Needless to say, we need a core dump to be generated when the app crashes at costumer's site.
The question is what is the reason behind using wait_event() instead of wait_event_interruptible() ?
Is it safe for us to change the code?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the etherlab-dev