Edit report at http://bugs.php.net/bug.php?id=53005&edit=1

 ID:                 53005
 Comment by:         reggaedancer at ymail dot com
 Reported by:        php at jdrtech dot com
 Summary:            iconv() fails in ext/iconv/iconv.c php_iconv_string
 Status:             Closed
 Type:               Bug
 Package:            Unknown/Other Function
 Operating System:   Solaris 10 Sparc
 PHP Version:        5.3.3
 Block user comment: N

 New Comment:

Ubelievable!!

It really works.

I just added:

LD_PRELOAD_32=/usr/local/lib/preloadable_libiconv.so

export LD_PRELOAD_32

and the Apache/PHP with iconv is working and not crashing anymore.



I tried to use disable_functions in PHP to avoid iconv,

but this preload solution is great.

Thank you very much for your help.


Previous Comments:
------------------------------------------------------------------------
[2010-10-13 15:12:45] wes at jdrtech dot com

libiconv should provide the preloadable library
preloadable_libiconv.so.



I edited apachectl:



--------------------------------------



 case $ARG in

    start)

        LD_PRELOAD_64=/fcgi/lib/preloadable_libiconv.so

        export LD_PRELOAD_64



        if [ $RUNNING -eq 1 ]; then

            echo "$0 $ARG: httpd (pid $PID) already running"

            continue

        fi

------------------------------------



of course your library location may differ, probably /usr/local/lib and
LD_PRELOAD_32 if your using 32 bit



good luck

------------------------------------------------------------------------
[2010-10-13 12:26:20] reggaedancer at ymail dot com

Hello, 

I have the same issue on Solaris 10 x86,

PHP 5.3.3

after running iconv PHP script, PHP crashed and created a core dump.

What do you mean by "needed to preload".

How can I fix this issue ?

------------------------------------------------------------------------
[2010-10-07 01:45:16] php at jdrtech dot com

needed to do preload, runs great

------------------------------------------------------------------------
[2010-10-06 22:58:19] php at jdrtech dot com

Description:
------------
PHP runs great with the exception of iconv. I've created a test program
that uses libiconv.so.2.5.0 with expected results



CLI command:



>./php ./test.php

Original : This is the Euro symbol '?'.

TRANSLIT : Segmentation Fault (core dumped)



CC: Sun C++ 5.8 2005/10/13

cc: Sun C 5.8 2005/10/13



Configure:



export CC=cc CFLAGS="-xarch=v9a" CXXFLAGS="-xarch=v9a"
CPPFLAGS="-I/fcgi/include" LDFLAGS="-L/fcgi/lib"



./configure --prefix=/fcgi --with-mysql=/opt/mysql/mysql
--enable-mbstring --with-apache=../apache_1.3.41 -with-dom
--with-xsl=/fcgi --with-iconv-dir=/fcgi --enable-debug



>ldd php

        libexslt.so.0 =>         /fcgi/lib/libexslt.so.0

        libpthread.so.1 =>       /lib/64/libpthread.so.1

        libsocket.so.1 =>        /lib/64/libsocket.so.1

        libnsl.so.1 =>   /lib/64/libnsl.so.1

        libm.so.2 =>     /lib/64/libm.so.2

        librt.so.1 =>    /lib/64/librt.so.1

        libmysqlclient.so.16 => 
/usr/local/mysql/lib/libmysqlclient.so.16

        libthread.so.1 =>        /lib/64/libthread.so.1

        libxslt.so.1 =>  /fcgi/lib/libxslt.so.1

        libxml2.so.2 =>  /fcgi/lib/libxml2.so.2

        libresolv.so.2 =>        /lib/64/libresolv.so.2

        libgen.so.1 =>   /lib/64/libgen.so.1

        libiconv.so.2 =>         /fcgi/lib/libiconv.so.2

        libc.so.1 =>     /lib/64/libc.so.1

        libz.so.1 =>     /usr/lib/64/libz.so.1

        libmp.so.2 =>    /lib/64/libmp.so.2

        libmd5.so.1 =>   /lib/64/libmd5.so.1

        libscf.so.1 =>   /lib/64/libscf.so.1

        libaio.so.1 =>   /lib/64/libaio.so.1

        libdoor.so.1 =>  /lib/64/libdoor.so.1

        libuutil.so.1 =>         /lib/64/libuutil.so.1

        /platform/SUNW,Sun-Blade-100/lib/sparcv9/libc_psr.so.1

        /platform/SUNW,Sun-Blade-100/lib/sparcv9/libmd5_psr.so.1





Test script:
---------------
<?php

$text = "This is the Euro symbol '?'.";



echo 'Original : ', $text, PHP_EOL;

echo 'TRANSLIT : ', iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text),
PHP_EOL;

echo 'IGNORE   : ', iconv("UTF-8", "ISO-8859-1//IGNORE", $text),
PHP_EOL;

echo 'Plain    : ', iconv("UTF-8", "ISO-8859-1", $text), PHP_EOL;



?>



Expected result:
----------------
unknown

Actual result:
--------------
t...@1 (l...@1) program terminated by signal SEGV (no mapping at the fault
address)

0xffffffff7d35a544: _iconv+0x002c:      jmp      %l5

Current function is php_iconv_string

  501                   result = iconv(cd, (char **) &in_p, &in_left,
(char **) &out_p, &out_left);




------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=53005&edit=1

Reply via email to