Hello Genodians
We have ported google protocol buffers and the Google RPC (grpc) to genode and would like to contribute that to genode world.
We encountered a problem with the port in which grpc server deadlocks when using the poll function of libc to poll sockets via the lwip or lxip plugin. We determined that poll calls Libc::suspend in task.cc which in term calls Pthreads::suspend_myself where the deadlock oocurs at myself.lock.lock();.
Note that the grpc server uses several threads which apparantly are all waiting/suspended when the problem occurred.
You can check out or working branch at https://github.com/trimpim/genode-world/commit/18da8122f805de0a137b778a6d83c... and execute scenario using run/grpc runscript reproduce the problem.
Does anyone has any idea why a deadlock might occur in that situation?
Kind regards Stefan