From: Nicolas Pitre Date: Wed, 24 Mar 2010 20:24:18 GMT Subject: Re: [PATCH] http-backend: Don't infinite loop during die() Message-ID: In-Reply-To: <20100324200658.GA22505@spearce.org> On Wed, 24 Mar 2010, Shawn O. Pearce wrote: > Junio C Hamano wrote: > > "Shawn O. Pearce" writes: > > > > > If stdout has already been closed by the CGI and die() gets called, > > > the CGI will fail to write the "Status: 500 Internal Server Error" to > > > the pipe, which results in die() being called again (via safe_write). > > > This goes on in an infinite loop until the stack overflows and the > > > process is killed by SIGSEGV. > > > > > > Instead set a flag on the first die() invocation and perform no > > > action during recursive die() calls. This way failures to write the > > > error messages to the stdout pipe do not result in an infinite loop. > > > > Hmm. I would need something like this on top, but there must be a better > > way. Ideas? > > Ick. > > Just exit(0) if dead is true. Do you really want the exit code to be 0 if you're dying? Nicolas