Nested threads

Johannes Kliemann kliemann at componolit.com
Tue Jun 19 15:38:13 CEST 2018


Hi Norman,

thank you for your hints. I could fix the problem which was caused by a
blocking call on a libc function without using Libc::with_libc.
Correctly encapsulating the affected code solved the problem.

Regards,
Johannes

Am 09.06.2018 um 10:37 schrieb Norman Feske:
> Hi Johannes,
> 
> On 01.06.2018 11:38, Johannes Kliemann wrote:
>> are nested threads (e.g. a thread class that owns an object of another
>> thread class and starts it from within its entry() method) a special
>> case? I noticed that the terminal session blocked from the inner thread
>> (write was called from the thread but the write implementation of the
>> terminal session was never executed). Putting the inner thread on the
>> same level as the outer one solved the problem.
> 
> I don't know exactly what you mean by "nesting" but I cannot think of
> anything special when instantiating a 'Thread' object in the context of
> another thread. By this notion, each thread - in fact, even the initial
> entrypoint - of a component would be a nested thread then.
> 
> What you observe looks like some form of deadlock. Are you able to
> reproduce the problem in a simple scenario on base-linux? If yes, the
> backtraces of the various threads (obtained by attaching GDB to the PID
> of your component, see below) would certainly reveal the issue.
> 
>   cd build/x86_64/debug
>   ln -sf ld-linux.lib.so ld.lib.so
>   gdb ./binary_of_your_component -p <PID-of-your-component>
> 
> Cheers
> Norman
> 



More information about the users mailing list