Deadlock in combination with pthread, lwip and grpc

Christian Helmuth christian.helmuth at
Fri May 22 12:11:25 CEST 2020

Hello Sid,

as I'm not able to fix the floating-point exception I just used the
following script and executed it in parallel with the depicted command

    for i in $(seq 10000); do
      dd if=/dev/zero status=none count=4 | netcat 8899 > /dev/null

  > parallel -j 20 ./ -- $(seq 20)

I also removed the diagnostic messages and after 422 rounds I got the
following log messages.

[init -> test-tcp_echo_server] waiting for connection 422
[init -> test-tcp_echo_server] Error: tcp_err_callback arg=null
[init -> test-tcp_echo_server] Error: Assertion "pbuf_free: p->ref > 0" /plain/krishna/src/genode/genode_tmp.git/contrib/lwip-6e0661b21fde397041389d5d8db906b5a6543700/src/lib/lwip/src/core/pbuf.c:753
[init -> test-tcp_echo_server] Error: tcp_poll_callback
[init -> test-tcp_echo_server] Error: tcp_poll_callback socket=653982970 state=4
[init -> test-tcp_echo_server] Error: tcp_poll_callback local_port=8899 remote_port=34522 state=4
[init -> test-tcp_echo_server] Error: tcp_poll_callback

This assertion seems to be very serious and the code decrements the
reference counter also if the assertion fails, which should render
this pbuf not reclaimable for a long time due to the integer
wrap-around. In my test case the lwip stack stills happily responds to
ARP and ICMP ping.

Is my test approach reasonable? Should we hunt the issue depicted above?

Christian Helmuth
Genode Labs · · /ˈdʒiː.nəʊd/

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth

More information about the users mailing list