Ticket #1256 (closed defect: fixed)

Opened 15 months ago

Last modified 15 months ago

spurious sigchlds causes ping pong to stop working

Reported by: martin Owned by:
Priority: normal Milestone:
Component: varnishd Version: trunk
Severity: critical Keywords:
Cc:

Description

On my debian linux system, sigchlds received from e.g. vcc/gcc causes the ev_poker to be removed from MGT's event list, causing the master<->child ping pong to stop.

This has been confirmed on both 3.0 and master.

This is caused by mgt_sigchld()(mgt_child.c) removing the ev_poker event unconditionally on any sigchld received. Though the question remains open why these signals are received in the first place.

Interestingly phk did not see the same effect on FreeBSD.

Martin

Change History

comment:1 Changed 15 months ago by Poul-Henning Kamp <phk@…>

In [054fd6a6d3a79fd26d5136b0a486413bce55ff24]:

Revisit the managers code to start and stop the child.

Eliminate SIGCHLD usage, it's icky, at best, when we have other
child processes (See #1256)

Instead of reaping the child on SIGCHLD, we do it explicitly,
and there is now a 10 second wait to give the child a chance to
shut down gracefully, before we take a bat to the kneecaps.

More work may be warranted, but I want to get some feedback on
this bit first.

Fixes #1256

comment:2 Changed 15 months ago by Poul-Henning Kamp <phk@…>

  • Status changed from new to closed
  • Resolution set to fixed

(In [054fd6a6d3a79fd26d5136b0a486413bce55ff24]) Revisit the managers code to start and stop the child.

Eliminate SIGCHLD usage, it's icky, at best, when we have other child processes (See #1256)

Instead of reaping the child on SIGCHLD, we do it explicitly, and there is now a 10 second wait to give the child a chance to shut down gracefully, before we take a bat to the kneecaps.

More work may be warranted, but I want to get some feedback on this bit first.

Fixes #1256

Note: See TracTickets for help on using tickets.