We upgraded to a newer openresty and begun to see segfaults.
Valgrind output:
==32455== Invalid read of size 8
==32455== at 0x20C72D: ngx_thread_pool_handler (ngx_thread_pool.c:387)
==32455== by 0x20A923: ngx_epoll_notify_handler (ngx_epoll_module.c:456)
==32455== by 0x20B47B: ngx_epoll_process_events (ngx_epoll_module.c:901)
==32455== by 0x1FACE4: ngx_process_events_and_timers (ngx_event.c:247)
==32455== by 0x208F79: ngx_worker_process_cycle (ngx_process_cycle.c:750)
==32455== by 0x205988: ngx_spawn_process (ngx_process.c:199)
==32455== by 0x207FC4: ngx_start_worker_processes (ngx_process_cycle.c:359)
==32455== by 0x207692: ngx_master_process_cycle (ngx_process_cycle.c:131)
==32455== by 0x1C6789: main (nginx.c:382)
==32455== Address 0x88cb6c0 is 0 bytes inside a block of size 192 free'd
==32455== at 0x48369AB: free (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==32455== by 0x1CA22F: ngx_destroy_pool (ngx_palloc.c:85)
==32455== by 0x39FC7C: ngx_http_lua_close_fake_connection (ngx_http_lua_util.c:3812)
==32455== by 0x39FA77: ngx_http_lua_close_fake_request (ngx_http_lua_util.c:3733)
==32455== by 0x39F960: ngx_http_lua_finalize_fake_request (ngx_http_lua_util.c:3693)
==32455== by 0x3C56AD: ngx_http_lua_ssl_cert_aborted (ngx_http_lua_ssl_certby.c:422)
==32455== by 0x1CA1F1: ngx_destroy_pool (ngx_palloc.c:57)
==32455== by 0x23172B: ngx_http_close_connection (ngx_http_request.c:3731)
==32455== by 0x22BF36: ngx_http_ssl_handshake_handler (ngx_http_request.c:879)
==32455== by 0x22BCE0: ngx_http_ssl_handshake (ngx_http_request.c:789)
==32455== by 0x22AE56: ngx_http_init_connection (ngx_http_request.c:384)
==32455== by 0x1FDC9F: ngx_event_accept (ngx_event_accept.c:308)
==32455== Block was alloc'd at
==32455== at 0x483577F: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==32455== by 0x201E4F: ngx_alloc (ngx_alloc.c:22)
==32455== by 0x1CA58A: ngx_palloc_large (ngx_palloc.c:220)
==32455== by 0x1CA375: ngx_palloc (ngx_palloc.c:131)
==32455== by 0x1CA78E: ngx_pcalloc (ngx_palloc.c:302)
==32455== by 0x20C272: ngx_thread_task_alloc (ngx_thread_pool.c:219)
==32455== by 0x412779: ngx_http_lua_io_thread_post_read_task (ngx_http_lua_io.c:248)
==32455== by 0x411D05: ngx_http_lua_io_file_read_helper (ngx_http_lua_io_module.c:1750)
==32455== by 0x40F98B: ngx_http_lua_io_file_read (ngx_http_lua_io_module.c:748)
==32455== by 0x4D01AD5: lj_BC_FUNCC (in /usr/local/lib/libluajit-5.1.so.2.1.0)
==32455== by 0x39B129: ngx_http_lua_run_thread (ngx_http_lua_util.c:1090)
==32455== by 0x3C5A20: ngx_http_lua_ssl_cert_by_chunk (ngx_http_lua_ssl_certby.c:533)
After working down the changes the cause appears to be the new luajit2
It appears to be early free'ing of memory, perhaps thread pool memory allocated from the request pool?
We upgraded to a newer openresty and begun to see segfaults.
Valgrind output:
After working down the changes the cause appears to be the new luajit2
It appears to be early free'ing of memory, perhaps thread pool memory allocated from the request pool?