반응형
apache 가 원인미상의 오류로 재시작되는 현상이 있어 원인을 찾아 보았다.
먼저 apache error log에 coredump 가 생성되었으니 확인해보라는 부분이 있었고,
coredump 가 생성된 위치를 알려준다. 해당 위치로 이동해보자.
cat 또는 vi 를 사용해 coredump 파일을 열어보았는데, 텍스트 파일이 아니었다.
그래서 여는 방법을 찾아보았더니, gdb 를 사용해야 했다.
하지만 단순히 gdb 로 연다고 해서 열리는게 아니라, 이걸 생성한 데몬을 기준으로 열어주어야 한다.
gdb /app/apache/bin/httpd /app/log/coredump/core.httpd.xxxx.2.xxxxx
이런식으로 coredump 파일을 열어주면 오류 내용이 출력되고, 어느 부분을 실행하다 오류가 발생했는지는 backtrace를 입력해주면 된다.
(gdb) backtrace
#0 0x00007f6765dc772a in __strchr_sse2 () from /lib64/libc.so.6
#1 0x00007f6765d7cfd6 in putenv () from /lib64/libc.so.6
#2 0x00007f6763ea7292 in php_putenv_destructor (pe=0x7f6727891b40)
at /app/src/php-5.3.29/ext/standard/basic_functions.c:3435
#3 0x00007f6763f8585b in zend_hash_destroy (ht=0x7f66d423bd48) at /app/src/php-5.3.29/Zend/zend_hash.c:529
#4 0x00007f6763ea78a5 in zm_deactivate_basic (type=1, module_number=26, tsrm_ls=0x7f66d412c8f0)
at /app/src/php-5.3.29/ext/standard/basic_functions.c:3768
#5 0x00007f6763f7a0af in module_registry_cleanup (module=<value optimized out>, tsrm_ls=<value optimized out>)
at /app/src/php-5.3.29/Zend/zend_API.c:2173
#6 0x00007f6763f855b8 in zend_hash_reverse_apply (ht=0x7f676479e4a0,
apply_func=0x7f6763f7a090 <module_registry_cleanup>, tsrm_ls=0x7f66d412c8f0)
at /app/src/php-5.3.29/Zend/zend_hash.c:757
#7 0x00007f6763f78120 in zend_deactivate_modules (tsrm_ls=0x7f66d412c8f0)
at /app/src/php-5.3.29/Zend/zend.c:867
#8 0x00007f6763f18509 in php_request_shutdown (dummy=<value optimized out>)
at /app/src/php-5.3.29/main/main.c:1643
#9 0x00007f6764010257 in php_apache_request_dtor (r=0x7f670413c6c0)
at /app/src/php-5.3.29/sapi/apache2handler/sapi_apache2.c:509
#10 php_handler (r=0x7f670413c6c0) at /app/src/php-5.3.29/sapi/apache2handler/sapi_apache2.c:681
#11 0x0000000000443450 in ap_run_handler (r=0x7f670413c6c0) at config.c:158
#12 0x0000000000446a7e in ap_invoke_handler (r=0x7f670413c6c0) at config.c:376
#13 0x0000000000492940 in ap_process_request (r=0x7f670413c6c0) at http_request.c:282
#14 0x000000000048f8c0 in ap_process_http_connection (c=0x7f672000d198) at http_core.c:190
#15 0x000000000044a9e0 in ap_run_process_connection (c=0x7f672000d198) at connection.c:43
#16 0x00000000004b03df in process_socket (thd=0x27f74a8, dummy=<value optimized out>) at worker.c:545
#17 worker_thread (thd=0x27f74a8, dummy=<value optimized out>) at worker.c:895
#18 0x00007f67660e3aa1 in start_thread () from /lib64/libpthread.so.0
#19 0x00007f6765e30c4d in clone () from /lib64/libc.so.6
(gdb)
해당 문제가 발생한 서버는 php5.3.29 라는 오래된 버전을 사용하고 있는 중인데,..
putenv() 를 실행할때 메모리 오류가 발생하였다. 그래서 해당 건을 $_SERVER 와 $_ENV를 활용한 코드로 대체하여 수정하였다.
끗.
반응형
'서버 등 운영체제(OS) > Linux' 카테고리의 다른 글
의심되는 cron 작업 제거하기 (0) | 2023.12.29 |
---|---|
nginx proxy client ip bypass 하기 (0) | 2023.12.25 |
how to remove netdata? netdata 패키지 제거 (0) | 2023.12.25 |
[Ubuntu] cron tab, 백도어 내 서버에.. ? (0) | 2023.12.25 |
[Ubuntu] ftp 를 사용한 원격백업 구성하기 (0) | 2023.09.20 |