tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: apache22 + SSL + php53 + curl = SIGHUP crash



In article <1kxcjrl.1jph1dwkgtiqdM%manu%netbsd.org@localhost>,
Emmanuel Dreyfus <manu%netbsd.org@localhost> wrote:
>Hi
>
>Running apache-2.2 with SSL and PHP 5.3 enabled on NetBSD-6.0. If I use
>the PHP curl module, apache will crash on SIGHUP.
>
>backtrace shows the crash occurs in a free(). I linked with electric
>fence to discover that curl was calling libcrypto's ENGINE_cleanup(), in
>which a free() occured on non malloc-provided pointer.
>
>Playing with gdb, I can see there are multiple calls to
>ENGINE_load_builtin_engines(): one for Apache SSL setup, one for libcurl
>setup. Then on SIGHUP, there are multiple calls to ENGINE_cleanup(), one
>foe Apache SSL, one for libcurl again.
>
>And it seems that calling ENGINE_load_builtin_engines() twice is enough
>to get a crash on ENGINE_cleanup(). Here is a sample program that
>reproduce the problem:
>
>/* cc -o test -g -lcrypto -L/usr/pkg/lib -lefence test.c */
>#include <stdio.h>
>#include <openssl/engine.h>
>
>int
>main(void)
>{
>        ENGINE_load_builtin_engines();
>        ENGINE_load_builtin_engines();
>        ENGINE_cleanup();
>
>        return 0;
>}
>
>Program received signal SIGSEGV, Segmentation fault.
>[Switching to LWP 1]
>0xbb72c1f0 in EVP_PKEY_meth_free () from /lib/libcrypto.so.8
>#0  0xbb72c1f0 in EVP_PKEY_meth_free () from /lib/libcrypto.so.8
>#1  0xbb73660a in engine_pkey_meths_free () from /lib/libcrypto.so.8
>#2  0xbb7752aa in engine_free_util () from /lib/libcrypto.so.8
>#3  0xbb737c9c in ENGINE_remove () from /lib/libcrypto.so.8
>#4  0xbb737d19 in ?? () from /lib/libcrypto.so.8
>#5  0xbb7750ce in ?? () from /lib/libcrypto.so.8
>#6  0xbb712f0c in sk_pop_free () from /lib/libcrypto.so.8
>#7  0xbb77541e in ENGINE_cleanup () from /lib/libcrypto.so.8
>#8  0x080487e5 in main () at test.c:9
>
>Any idea of what software is at fault? Is it libcrypto for crashing on
>multiple ENGINE_load_builtin_engines() calls, or is it apache/php/curl
>for doing it? Or is it a fake positive raised by electric fence? My test
>program does not crash if I do not link with -lefence.
>

Looks like a bug with openssl. Why don't you ask them?

christos



Home | Main Index | Thread Index | Old Index