[PHP-users 6790] Re: PHP4.2.0RC2 のバグ?(mb_output_handler とxslt_process )

SHIMOOKA Hideyuki php-users@php.gr.jp
Wed, 10 Apr 2002 11:11:58 +0900


下岡です。

大垣さん、ありがとうございます。
昨日試した結果をご報告します。

---- Yasuo Ohgakiさん曰く...

>ソースを全く見ていないので変換後のファイルを添付
>しておきます。

確かに期待している出力ですね。


>1) PHP 4.2.0-dev (CVS)版を試す。
>2) Sablotronのバージョンを0.82にする。

以下の組み合わせで試してみましたが、backtraceの結果は同じ
(zif_mb_output_handlerでthis_ptr=0x0)となってしまいま
した。

・PHP4.2.0-RC2+Sablotron0.90
・PHP4.3.0-dev(annnonymous cvsでソースをcheckout php4)+
 Sablotron0.90

また、PHPのconfigureオプションとして、

--with-apxs=/usr/local/apache/bin/apxs \
--enable-xslt \
--with-xslt-sablot=/usr/local \
--with-expat-dir=/usr/local \
--enable-mbstring \
--enable-mbstr-enc-trans \
--enable-debug

のみとしてみましたが、同様の結果でした。

ちなみに、

・RedHat7.2(製品版)
・PHP4.2.0-RC2
・expat1.95.2(ソースからconfigure、make install)
・Sablotron0.90(ソースからconfigure、make install)

を上のconfigureオプションでインストールして実行じてみると、
同じくSegmentation faultが発生しましたが、backtraceは以下の
ようになりました。

----ここから

# gdb /usr/local/apache/bin/httpd 
GNU gdb Red Hat Linux 7.x (5.0rh-15) (MI_OUT)
Copyright 2001 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux"...
(gdb) run -X
Starting program: /usr/local/apache/bin/httpd -X

Program received signal SIGSEGV, Segmentation fault.
0x4010fc71 in strlen () from /lib/i686/libc.so.6
(gdb) bt
#0  0x4010fc71 in strlen () from /lib/i686/libc.so.6
#1  0x405c2a84 in zif_mb_output_handler (ht=2, return_value=0x80fb124, 
    this_ptr=0x0, return_value_used=1) at mbstring.c:1479
#2  0x4057eceb in call_user_function_ex (function_table=0x80c3478, 
    object_pp=0x0, function_name=0x80e8ae4, retval_ptr_ptr=0xbfffee40, 
    param_count=2, params=0xbfffede8, no_separation=1, symbol_table=0x0)
    at zend_execute_API.c:532
#3  0x405a4e40 in php_end_ob_buffer (send_buffer=1 '\001', just_flush=0 '\000')
    at output.c:175
#4  0x405a5273 in php_end_ob_buffers (send_buffer=1 '\001') at output.c:264
#5  0x4059a33a in php_request_shutdown (dummy=0x0) at main.c:763
#6  0x405966d6 in apache_php_module_main (r=0x80e2ac4, display_source_mode=0)
    at sapi_apache.c:96
#7  0x405974cc in send_php (r=0x80e2ac4, display_source_mode=0, 
    filename=0x80e35fc "/home/shimooka/public_html/xslt_process3.php")
    at mod_php4.c:575
#8  0x40597539 in send_parsed_php (r=0x80e2ac4) at mod_php4.c:590
#9  0x08053cd7 in ap_invoke_handler () at eval.c:41
#10 0x08068557 in process_request_internal () at eval.c:41
#11 0x080685b8 in ap_process_request () at eval.c:41
#12 0x0805f80d in child_main () at eval.c:41
#13 0x0805f9b8 in make_child () at eval.c:41
#14 0x0805fb2c in startup_children () at eval.c:41
#15 0x080601a4 in standalone_main () at eval.c:41
#16 0x080609f7 in main () at eval.c:41
---Type <return> to continue, or q <return> to quit---
#17 0x400a5507 in __libc_start_main (main=0x8060660 <main>, argc=2, 
    ubp_av=0xbffff844, init=0x804e270 <_init>, fini=0x807db40 <_fini>, 
    rtld_fini=0x4000dc14 <_dl_fini>, stack_end=0xbffff83c)
    at ../sysdeps/generic/libc-start.c:129
(gdb) 

----ここまで

-- 
H.Shimooka/shimooka@axissoft.co.jp