Edit report at http://bugs.php.net/bug.php?id=53844&edit=1
ID: 53844
Comment by: phil at quizlet dot com
Reported by: r at rcrowley dot org
Summary: PHP built from source on Solaris gets SIGSEGV with
libiconv
Status: Feedback
Type: Bug
Package: ICONV related
Operating System: Solaris
PHP Version: 5.3.5
Block user comment: N
Private report: N
New Comment:
I ran it exactly as you wrote, still got a "Segmentation Fault (core
dumped)"
[root@gnp2b7ap /opt/sourceinstall/php-5.3.5]# /root/gdb/bin/gdb
./sapi/cli/php
core
GNU gdb 6.2.1
Copyright 2004 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-sun-solaris2"...
Core was generated by `./sapi/cli/php -r echo iconv("UTF-8", "UTF-8",
"Hello,
world.\n");'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /lib/libresolv.so.2...done.
Loaded symbols for /lib/libresolv.so.2
Reading symbols from /opt/local/lib/libiconv.so.2...done.
Loaded symbols for /opt/local/lib/libiconv.so.2
Reading symbols from /lib/librt.so.1...
warning: Lowest section in /lib/librt.so.1 is .dynamic at 00000074
done.
Loaded symbols for /lib/librt.so.1
Reading symbols from /lib/libm.so.2...done.
Loaded symbols for /lib/libm.so.2
Reading symbols from /lib/libnsl.so.1...done.
Loaded symbols for /lib/libnsl.so.1
Reading symbols from /lib/libsocket.so.1...done.
Loaded symbols for /lib/libsocket.so.1
Reading symbols from /lib/libc.so.1...done.
Loaded symbols for /lib/libc.so.1
Reading symbols from /opt/gcc/lib/libgcc_s.so.1...done.
Loaded symbols for /opt/gcc/lib/libgcc_s.so.1
Reading symbols from /usr/lib/locale/en_US.ISO8859-1/en_US.ISO8859-
1.so.3...done.
Loaded symbols for /usr/lib/locale/en_US.ISO8859-1/en_US.ISO8859-1.so.3
#0 0xec835356 in ?? ()
(gdb) bt
#0 0xec835356 in ?? ()
#1 0xfebc68ab in iconv () from /lib/libc.so.1
#2 0x080d9141 in php_iconv_string (in_p=0x8308488 "Hello, world.\n",
in_len=14,
out=0x8047624, out_len=0x8047628, out_charset=0x830845c "UTF-8",
in_charset=0x8309904 "UTF-8")
at /opt/sourceinstall/php-5.3.5/ext/iconv/iconv.c:501
#3 0x080dbb0c in php_if_iconv (ht=3, return_value=0x83084a0,
return_value_ptr=0x0, this_ptr=0x0, return_value_used=1) at
/opt/sourceinstall/php-
5.3.5/ext/iconv/iconv.c:2327
#4 0x081caac5 in zend_do_fcall_common_helper_SPEC
(execute_data=0x83ec520) at
zend_vm_execute.h:316
#5 0x081c9ec2 in execute (op_array=0x8308388) at zend_vm_execute.h:107
#6 0x081a1e3f in zend_eval_stringl (str=0x8047ce6 "echo
iconv(\"UTF-8\", \"UTF-
8\", \"Hello, world.\\n\");", str_len=0, retval_ptr=0x0,
string_name=0x82b9ec9
"Command line code")
at /opt/sourceinstall/php-5.3.5/Zend/zend_execute_API.c:1193
#7 0x081a1fdb in zend_eval_stringl_ex (str=0x8047ce6 "echo
iconv(\"UTF-8\",
\"UTF-8\", \"Hello, world.\\n\");", str_len=48, retval_ptr=0x0,
string_name=0x82b9ec9 "Command line code",
handle_exceptions=1) at /opt/sourceinstall/php-
5.3.5/Zend/zend_execute_API.c:1235
#8 0x081a2035 in zend_eval_string_ex (str=0x80475e0 "\016",
retval_ptr=0x0,
string_name=0x82b9ec9 "Command line code", handle_exceptions=1)
at /opt/sourceinstall/php-5.3.5/Zend/zend_execute_API.c:1246
#9 0x08223584 in main (argc=3, argv=0x8047bf0) at
/opt/sourceinstall/php-
5.3.5/sapi/cli/php_cli.c:1282
Previous Comments:
------------------------------------------------------------------------
[2011-02-09 11:34:09] [email protected]
I meant to write --disable-all, sorry for the mistake. Could you try
./configure --disable-all --with-iconv && make && ./sapi/cli/php -r
'echo iconv("UTF-8", "UTF-8", "Hello, world.\n");'
------------------------------------------------------------------------
[2011-02-09 01:15:59] phil at quizlet dot com
No luck...
With the original configuration, I tried:
# LD_LIBRARY_PATH=/opt/local/lib ; export LD_LIBRARY_PATH ; php -r 'echo
iconv("UTF-8", "UTF-8", "Hello, world.\n");'
as well as:
# LD_LIBRARY_PATH=/opt/local/lib php -r 'echo iconv("UTF-8", "UTF-8",
"Hello,
world.\n");'
as well as reconfiguring with:
# ./configure --disable-iconv --with-iconv
and also tried:
# ./configure LDFLAGS=/opt/local/lib --with-iconv
and:
# ./configure LDFLAGS=/opt/local/lib --disable-iconv --with-iconv
Note: I did get a "Notice: Following unknown configure options were
used: --
disable-iconv" when trying to follow johannes advice, and
--disable-iconv isn't
listed in ./configure --help.
In ALL of the above cases when testing PHP's iconv() I got a segfault
and
checked the backtrace with gdb after each and they were all identical:
(gdb) bt
#0 0xec835356 in ?? ()
#1 0xfe8d68ab in iconv () from /lib/libc.so.1
#2 0x0815a2b1 in php_iconv_string (in_p=0x8653484 "Hello, world.\n",
in_len=14,
out=0x8047580, out_len=0x8047584, out_charset=0x8653458 "UTF-8",
in_charset=0x8654900 "UTF-8")
at /tmp/tmp..Aa4sh/php-5.3.5/ext/iconv/iconv.c:501
#3 0x0815d274 in php_if_iconv (ht=3, return_value=0x865349c,
return_value_ptr=0x0, this_ptr=0x0, return_value_used=1) at
/tmp/tmp..Aa4sh/php-
5.3.5/ext/iconv/iconv.c:2327
#4 0x083147de in zend_do_fcall_common_helper_SPEC
(execute_data=0x8793f70) at
zend_vm_execute.h:316
#5 0x0831385d in execute (op_array=0x8653384) at zend_vm_execute.h:107
#6 0x082e6e29 in zend_eval_stringl (str=0x8047ccb "echo
iconv(\"UTF-8\", \"UTF-
8\", \"Hello, world.\\n\");", str_len=48, retval_ptr=0x0,
string_name=0x85c30ae
"Command line code")
at /tmp/tmp..Aa4sh/php-5.3.5/Zend/zend_execute_API.c:1193
#7 0x082e6fe2 in zend_eval_stringl_ex (str=0x8047ccb "echo
iconv(\"UTF-8\",
\"UTF-8\", \"Hello, world.\\n\");", str_len=48, retval_ptr=0x0,
string_name=0x85c30ae "Command line code",
handle_exceptions=1) at /tmp/tmp..Aa4sh/php-
5.3.5/Zend/zend_execute_API.c:1235
#8 0x082e705a in zend_eval_string_ex (str=0x8047540 "\016",
retval_ptr=0x0,
string_name=0x85c30ae "Command line code", handle_exceptions=1) at
/tmp/tmp..Aa4sh/php-5.3.5/Zend/zend_execute_API.c:1246
#9 0x08376724 in main (argc=3, argv=0x8047bdc) at /tmp/tmp..Aa4sh/php-
5.3.5/sapi/cli/php_cli.c:1282
Any other ideas?
------------------------------------------------------------------------
[2011-02-08 03:23:32] [email protected]
what happens when you do some thing like
LD_LIBRARY_PATH=/opt/local/lib ; export LD_LIBRARY_PATH ; php -r 'echo
iconv("UTF-8", "UTF-8", "Hello, world.\n");'
------------------------------------------------------------------------
[2011-02-07 20:55:49] phil at quizlet dot com
(I'm working with Richard on this...)
[root@gnp2b7ak ~]# showrev
Hostname: ...
Hostid: c54426
Release: 5.11
Kernel architecture: i86pc
Application architecture: i386
Hardware provider:
Domain:
Kernel version: SunOS 5.11 snv_121
Joyent (the hosting provider) has kindly offered a free Joyent Solaris
instance
for you to test against, if you'd like. Just email me and I'll get it
set up.
------------------------------------------------------------------------
[2011-02-07 19:46:23] [email protected]
Which version of solaris are you using? My Solaris 11 express works
fine. Could you also try doing a
./configure --disable-iconv --with-iconv
build? Yor stacktrace shows
#1 0xfe8d68ab in iconv () from /lib/libc.so.1
so the libc's iconv is being used. My assumption is that another library
is using iconv from /opt/local and so the linker pulls the libs in the
wrong order so one version is used for compiling PHP the other for
running ...
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/bug.php?id=53844
--
Edit this bug report at http://bugs.php.net/bug.php?id=53844&edit=1