[완료] centos5.5 x86_64 환경에서 php용 gnupg중 ERROR_EXCEPTION 이 발생하면 Segmentation fault 를 일으킵니다

pogusm의 이미지

http://www.php.net/manual/en/book.gnupg.php 를 참고하여, php용 GnuPG 모듈을 사용중입니다.

# cat > test.php
<?php
$gpg = new gnupg();
$gpg->seterrormode(gnupg::ERROR_EXCEPTION);
//$gpg->seterrormode(gnupg::ERROR_WARNING); // 이 설정일때는 x86_64, i386에 상관없이 정상작동
try { // ERROR_EXCEPTION이 발생하지 않는다면, x86_64, i386 상관없이 정상작동
$gpg->adddecryptkey('gpg_key_name','password');
$plaintext = $gpg->decrypt($ciphertext);
echo "복호화 성공 : ".$plaintext;
} catch (Exception $e) { // ERROR_EXCEPTION이 발생하면 x86_64환경에선 Segmentation fault / i386에서는 정상작동
echo "요청한 정보가 유효하지 않습니다(".$e->getMessage().")"."\n";
}
?>

위의 소스를 웹브라우저로 실행하면, 아무결과도 출력하지 않고
/var/log/httpd/error_log 에
[Thu Jun 24 20:43:41 2010] [notice] child pid 10046 exit signal Segmentation fault (11) 같은 로그를 남깁니다.

반면 쉘 상에서
# php test.php 라고 하면
'요청한 정보가 유효하지 않습니다(decrypt failed)'
라는 메시지를 뿌리며 정상적인 작동을 합니다

virtualbox상의 centos5.5.x86_64 , fedora13.x86_64 환경에서 테스트 해본결과 마찬가지였으며,
centos5.5.i386에서는 ERROR_EXCEPTION이 제대로 작동하였습니다..

하루종일 삽질해봐도 해결책을 못찾아서 혹시나 하고 질문 올려봅니다..

전문가가 아니라, 취미로 하는거라 잘 모릅니다 ㅠㅠ

# gdb /usr/sbin/httpd /tmp/core.31459
....
....
Reading symbols from /usr/lib64/php/modules/zip.so...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/php/modules/zip.so
Core was generated by `/usr/sbin/httpd'.
Program terminated with signal 11, Segmentation fault.
#0 0x00002b817106e403 in instanceof_function_ex () from /etc/httpd/modules/libphp5.so
(gdb) bt
#0 0x00002b817106e403 in instanceof_function_ex () from /etc/httpd/modules/libphp5.so
#1 0x00002b817106e3db in instanceof_function () from /etc/httpd/modules/libphp5.so
#2 0x00002b817108e109 in zend_throw_exception () from /etc/httpd/modules/libphp5.so
#3 0x00002b8176642061 in zif_gnupg_decrypt (ht=1, return_value=0x2b817449a800,
return_value_ptr=, this_ptr=,
return_value_used=) at /var/tmp/gnupg/gnupg.c:1209
#4 0x00002b817451d27e in xdebug_execute_internal () from /usr/lib64/php/modules/xdebug.so
#5 0x00002b81710c3d5d in ?? () from /etc/httpd/modules/libphp5.so
#6 0x00002b817109a44b in execute () from /etc/httpd/modules/libphp5.so
#7 0x00002b817451cef3 in xdebug_execute () from /usr/lib64/php/modules/xdebug.so
#8 0x00002b8171076ba5 in zend_execute_scripts () from /etc/httpd/modules/libphp5.so
#9 0x00002b8171027cc8 in php_execute_script () from /etc/httpd/modules/libphp5.so
#10 0x00002b81710fec2d in ?? () from /etc/httpd/modules/libphp5.so
#11 0x00002b8164a84a4a in ap_run_handler ()
#12 0x00002b8164a87ec2 in ap_invoke_handler ()
#13 0x00002b8164a92918 in ap_process_request ()
#14 0x00002b8164a8fb50 in ?? ()
#15 0x00002b8164a8bcb2 in ap_run_process_connection ()
#16 0x00002b8164a96769 in ?? ()
#17 0x00002b8164a969fa in ?? ()
#18 0x00002b8164a96ab0 in ?? ()
#19 0x00002b8164a9779b in ap_mpm_run ()
#20 0x00002b8164a71e48 in main ()
(gdb)

(gdb 가 뭐하는건지는 모르겠지만... 일단 올려봅니다..)

# httpd -v
Server version: Apache/2.2.3
Server built: Apr 4 2010 17:18:37

# gpg --version
gpg (GnuPG) 1.4.5

# pecl list
Installed packages, channel pecl.php.net:
=========================================
Package Version State
gnupg 1.3.1 stable
xdebug 2.0.5 stable

혹시 아시는 분 있으면 답변 부탁드립니다...

pogusm의 이미지

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.