Hmm, far less likely, but still:

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGSEGV)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   httpd [6106]

Application Specific Information:
crashed on child side of fork pre-exec

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_malloc.dylib              0x00007fff6b2e1c8c free_tiny + 243
1   libcrypto.1.1.dylib                 0x0000000101363484 OPENSSL_LH_delete + 
228
2   libcrypto.1.1.dylib                 0x00000001013730f9 OBJ_NAME_remove + 105
3   libcrypto.1.1.dylib                 0x000000010136368a OPENSSL_LH_doall + 74
4   libcrypto.1.1.dylib                 0x0000000101373338 OBJ_NAME_cleanup + 72
5   libcrypto.1.1.dylib                 0x00000001013577de evp_cleanup_int + 14
6   libcrypto.1.1.dylib                 0x0000000101360ccf OPENSSL_cleanup + 335
7   libsystem_c.dylib                   0x00007fff6b1da3d6 
__cxa_finalize_ranges + 326
8   libsystem_c.dylib                   0x00007fff6b1da6b3 exit + 55
9   mod_mpm_event.so                    0x0000000101531546 clean_child_exit + 
54 (event.c:768)
10  mod_mpm_event.so                    0x0000000101531382 child_main + 1698 
(event.c:2551)
11  mod_mpm_event.so                    0x0000000101530c84 make_child + 436
12  mod_mpm_event.so                    0x000000010152f7e5 event_run + 1093 
(event.c:3256)
13  httpd                               0x0000000100f0366b ap_run_mpm + 75 
(mpm_common.c:101)
14  httpd                               0x0000000100ef4679 main + 2233 
(main.c:848)
15  libdyld.dylib                       0x00007fff6b1343d5 start + 1

Thread 1:
0   libsystem_pthread.dylib             0x00007fff6b327e02 
pthread_rwlock_wrlock + 0
1   libcrypto.1.1.dylib                 0x00000001013be209 
CRYPTO_THREAD_write_lock + 9
2   libcrypto.1.1.dylib                 0x000000010138f3a6 RAND_get_rand_method 
+ 54
3   libcrypto.1.1.dylib                 0x000000010138f675 RAND_priv_bytes + 21
4   libcrypto.1.1.dylib                 0x00000001012b4bb2 bnrand + 178
5   libcrypto.1.1.dylib                 0x00000001012b2f49 BN_generate_prime_ex 
+ 665
6   libcrypto.1.1.dylib                 0x00000001013979b7 
RSA_generate_multi_prime_key + 1783
7   libcrypto.1.1.dylib                 0x000000010139c2d0 pkey_rsa_keygen + 160
8   libcrypto.1.1.dylib                 0x000000010135bc5b EVP_PKEY_keygen + 91
9   mod_md.so                           0x0000000101552bb4 gen_rsa + 132 
(md_crypt.c:464)
10  mod_md.so                           0x000000010154a797 
md_acme_acct_register + 887 (md_acme_acct.c:591)
11  mod_md.so                           0x000000010154c83c 
md_acme_drive_set_acct + 1020 (md_acme_drive.c:158)
12  mod_md.so                           0x000000010154fd61 
md_acmev2_drive_renew + 81 (md_acmev2_drive.c:102)
13  mod_md.so                           0x000000010154da40 acme_driver_renew + 
1520
14  mod_md.so                           0x000000010155f196 run_renew + 262 
(md_reg.c:1066)
15  mod_md.so                           0x0000000101564179 md_util_pool_vdo + 
185 (md_util.c:54)
16  mod_md.so                           0x000000010155f08a md_reg_renew + 42 
(md_reg.c:1075)
17  mod_md.so                           0x00000001015423dc run_watchdog + 668 
(mod_md_drive.c:127)
18  mod_watchdog.so                     0x00000001014fd4fc wd_worker + 636 
(mod_watchdog.c:202)
19  libsystem_pthread.dylib             0x00007fff6b3282eb _pthread_body + 126
20  libsystem_pthread.dylib             0x00007fff6b32b249 _pthread_start + 66
21  libsystem_pthread.dylib             0x00007fff6b32740d thread_start + 13


> Am 25.09.2019 um 14:46 schrieb Stefan Eissing <stefan.eiss...@greenbytes.de>:
> 
> The patch looks nice. Running it in my test suite over and over without any 
> crash showing up!
> 
> Great work!
> 
>> Am 25.09.2019 um 13:24 schrieb Yann Ylavic <ylavic....@gmail.com>:
>> 
>> On Wed, Sep 25, 2019 at 11:54 AM Stefan Eissing
>> <stefan.eiss...@greenbytes.de> wrote:
>>> 
>>> Looking for help on an issue in mod_watchdog use and child exits.
>>> 
>>> Occasionally a httpd child crashes due to races between child pool being 
>>> destroyed while watchdog threads are still running. The crash manifests 
>>> most likely when OPENSSL_cleanup runs while another thread is generated a 
>>> private key (singe that takes relatively long).
>>> 
>>> Beside the crash report, nothing else really fails since the child is 
>>> terminating anyway and no requests are onoing. But still, it's not a nice 
>>> thing.
>>> 
>>> Do you see an easy way to avoid this?
>> 
>> AFAICT, clean_child_exit() destroys pchild only, and pconf is still
>> alive at exit() time.
>> Couldn't we use pconf only in child_init hooks of mod_ssl and mod_watchdog?
>> Does something like the attached patch fixes the crash?
>> <some_pchild_to_pconf.diff>
> 

Reply via email to