Followup to my own message.
Tomasz Gajewski tomga@wp.pl writes:
... there are two 'asynchronous' operations that 'gdb_monitor' intercepts quickly one after another:
- pthread create
- service announce
and it seems that if they are executed too quickly by debugged program then there is a hang.
Given that there are issues with 'ssh_terminal' stability (issue #4095 https://github.com/genodelabs/genode/issues/4095) I wasn't sure if observed hangs when executing those commands (creating thread and announcing service) quickly weren't a sign of some problem in 'ssh_terminal' itself. To verify I extended 'test-gdb_monitor' with announcement of simple LOG service (based on test code from os/src/test/init/main.cc).
Using this test I confifmed that:
* creating thread (using pthread_create) and announcing a service executed one after another quickly cause a hang when executed with 'gdb_monitor'
* it happens no matter which is first
* adding busy loop between them eliminates a hang problem (no matter which comes first)
* when executed on Nova announcing a new service causes creation of two threads visible in gdb_monitor - I think that this observation can be really important
I don't know internals well enough but I think that either:
* creating threads quickly may cause problems for gdb_monitor
* creating threads from different worlds (posix thread and some internal Genode service threads which I assume are created for service) may require some special care.
Hopefully those observations and thoughts will be helpful.
Regards Tomasz