diff options
author | Jakub Zelenka <bukka@php.net> | 2019-01-17 18:33:53 +0000 |
---|---|---|
committer | Jakub Zelenka <bukka@php.net> | 2019-01-17 18:37:09 +0000 |
commit | 766b4fd5150031878188a03ea77bb9a0f73e4dc5 (patch) | |
tree | 53c8693b75ac3cc74164121fdd766dbf6c86f29f | |
parent | 26b5aa85845ca270eb7c25799a7141d0f12e6bd9 (diff) | |
download | php-git-766b4fd5150031878188a03ea77bb9a0f73e4dc5.tar.gz |
Fix bug #77430 (php-fpm crashes with Main process exited)
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | sapi/fpm/fpm/fpm_stdio.c | 11 |
2 files changed, 11 insertions, 4 deletions
@@ -21,6 +21,10 @@ PHP NEWS . Fixed bug #77346 (webm files incorrectly detected as application/octet-stream). (Anatol) +- FPM: + . Fixed bug #77430 (php-fpm crashes with Main process exited, code=dumped, + status=11/SEGV). (Jakub Zelenka) + - GD: . Fixed bug #73281 (imagescale(…, IMG_BILINEAR_FIXED) can cause black border). (cmb) diff --git a/sapi/fpm/fpm/fpm_stdio.c b/sapi/fpm/fpm/fpm_stdio.c index ba8f6d8213..03d15cbf0d 100644 --- a/sapi/fpm/fpm/fpm_stdio.c +++ b/sapi/fpm/fpm/fpm_stdio.c @@ -122,7 +122,7 @@ static void fpm_stdio_child_said(struct fpm_event_s *ev, short which, void *arg) struct fpm_event_s *event; int fifo_in = 1, fifo_out = 1; int in_buf = 0; - int read_fail = 0, finish_log_stream = 0; + int read_fail = 0, finish_log_stream = 0, create_log_stream; int res; struct zlog_stream *log_stream; @@ -138,7 +138,8 @@ static void fpm_stdio_child_said(struct fpm_event_s *ev, short which, void *arg) event = &child->ev_stderr; } - if (!child->log_stream) { + create_log_stream = !child->log_stream; + if (create_log_stream) { log_stream = child->log_stream = malloc(sizeof(struct zlog_stream)); zlog_stream_init_ex(log_stream, ZLOG_WARNING, STDERR_FILENO); zlog_stream_set_decorating(log_stream, child->wp->config->decorate_workers_output); @@ -196,8 +197,10 @@ static void fpm_stdio_child_said(struct fpm_event_s *ev, short which, void *arg) } if (read_fail) { - zlog_stream_set_msg_suffix(log_stream, NULL, ", pipe is closed"); - zlog_stream_finish(log_stream); + if (create_log_stream) { + zlog_stream_set_msg_suffix(log_stream, NULL, ", pipe is closed"); + zlog_stream_finish(log_stream); + } if (read_fail < 0) { zlog(ZLOG_SYSERROR, "unable to read what child say"); } |