[etherlab-dev] wait_event() causes uninterruptible_sleep

Geller, Nir nir.geller at servotronix.com
Wed Jan 29 11:31:15 CET 2020

Hi There,

we are working with etherlab's ethercat master and recently we've encountered a problem that is related to a non interruptible wait_event().

The scenario:
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...
URL: <http://lists.etherlab.org/pipermail/etherlab-dev/attachments/20200129/406a569c/attachment.html>

More information about the etherlab-dev mailing list