NYCPHP Meetup

[nycphp-talk] Re: talk Digest, Vol 11, Issue 18

Hans Zaunere lists at zaunere.com
Sun Sep 9 11:56:04 EDT 2007



Joshua Hart wrote on Saturday, September 08, 2007 11:09 PM:
> On 9/8/07 10:45 PM, "talk-request at lists.nyphp.org"
> <talk-request at lists.nyphp.org> wrote:
> 
> > 
> > > Oracle is instantclient ia64-10.2.0.3-20061230
> > > 
> > > oci8 version 1.2.3  revision 1.269.2.16.2.37
> > > 
> > > Here's my configure command for PHP:
> > > 
> > > './configure' '--with-zlib' '--with-gd' '--with-jpeg' '--with-png'
> > > '--with-libxml2=/usr/bin' '--with-mysql=/usr/local/mysql5120'
> > > '--with-apxs2=/usr/local/apache2/bin/apxs' '--enable-ftp'
> > > '--with-imap-ssl=/usr/include/ssl'
> > > '--with-imap=/space/custom_builds/imap-stuff/' '--with-openssl'
> > > '--with-pam' '--with-dom' '--with-iconv' '--with-mbstring=all'
> > > '--with-mbregex' '--with-domsxlt' '--with-mcrypt' '--with-xml'
> > > '--with-mime-magic' '--enable-exif' '--enable-uploadprogress'
> > > '--with-xmlrpc' '--with-gettext' '--with-pgsql'
> > > '--with-oci8=instantclient,/usr/local/oracle'
> > 
> > Hmm... since this is ia64, there is no lib64 anywhere right?  Make
> > sure PHP is linking against the right libs.  Sometimes lib64'ness
> > isn't always obvious.  Try adding --with-libdir=lib64 to the PHP
> > ./configure, but I'm not sure on this.
> 
> Ldd on the cli for php gives:
> ssaturn /usr/local# ldd /space/custom_builds/php-5.2.4/sapi/cli/php
>         linux-gate.so.1 =>  (0xa000000000000000)
>         libcrypt.so.1 => /lib/libcrypt.so.1 (0x2000000000064000)
>         libc-client.so =>
> /space/custom_builds/imap-stuff//lib/libc-client.so
>         (0x20000000000b4000) libpq.so.5 =>
>         /usr/local/pgsql/lib/libpq.so.5 (0x2000000000288000)
>         librt.so.1 => /lib/librt.so.1 (0x20000000002dc000)
> libmysqlclient.so.15 => /usr/local/mysql5120/lib/libmysqlclient.so.15
>         (0x20000000002fc000) libmcrypt.so.4 =>
>         /usr/lib/libmcrypt.so.4 (0x2000000000528000) libltdl.so.3 =>
>         /usr/lib/libltdl.so.3 (0x2000000000588000) libdl.so.2 =>
>         /lib/libdl.so.2 (0x20000000005a8000) libpam.so.0 =>
>         /lib/libpam.so.0 (0x20000000005c0000) libpng.so.3 =>
>         /usr/lib/libpng.so.3 (0x20000000005e8000) libresolv.so.2 =>
>         /lib/libresolv.so.2 (0x200000000066c000) libm.so.6.1 =>
>         /lib/libm.so.6.1 (0x20000000006a0000) libnsl.so.1 =>
>         /lib/libnsl.so.1 (0x2000000000770000) libssl.so.0.9.8 =>
>         /usr/lib/libssl.so.0.9.8 (0x20000000007ac000)
> libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x200000000083c000)
>         libclntsh.so.10.1 => /usr/local/oracle/libclntsh.so.10.1
> (0x2000000000aa8000)
>         libxml2.so.2 => /usr/lib/libxml2.so.2 (0x2000000002c90000)
>         libc.so.6.1 => /lib/libc.so.6.1 (0x2000000002f40000)
>         libimf.so.6 => /opt/intel/cc/9.1.037/lib/libimf.so.6
> (0x2000000003190000)
>         libirc.so => /opt/intel/cc/9.1.037/lib/libirc.so
> (0x2000000003440000)
>         libipr.so.6 => /usr/local/oracle/libipr.so.6
>         (0x2000000003470000) libgcc_s.so.1 => /lib/libgcc_s.so.1
>         (0x2000000003484000) libpthread.so.0 => /lib/libpthread.so.0
>         (0x20000000034a4000) /lib/ld-linux-ia64.so.2
>         (0x2000000000000000) libz.so.1 => /lib/libz.so.1
>         (0x20000000034dc000) libnnz10.so =>
>         /usr/local/oracle/libnnz10.so (0x2000000003510000)
> libunwind.so.7 => /lib/libunwind.so.7 (0x2000000003898000) 
> 
> 
> 
> 
> > Another option would be to strip down the ./configure and add
> > --disable-all. Perhaps there are some conflicts with Oracle, lib64,
> > etc.  Then start to add extensions to see if you can isolate the
> > problem. 
> > 
> > > Again, I can successfully login to the oracle database, and the
> > > simplest of queries works. Anything "complicated" crashes the
> > > program. 
> > 
> > If I understand correctly - if you login via the Oracle client
> > directly (so no PHP involved), it'll still segfault when there's a
> > complicated query? 
> 
> No.. What I was trying to say is that I can login to oracle via a PHP
> script.  I can even do my query if I limit the data which is returned
> by oracle to less than 5 rows. As soon as I ask it to return 5 or
> more rows I get a segfault.
> 
> In order to test the instantclient installatiton I installed the
> sqlplus "add on" for instantclient and it is able to connect to
> oracle and return all requested rows.
> 
> When I use gdb to run the cli for php I get:
> 
> gdb /space/custom_builds/php-5.2.4/sapi/cli/php
> GNU gdb 6.4
> Copyright 2005 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 "ia64-suse-linux"...Using host
> libthread_db library "/lib/libthread_db.so.1".
> 
> (gdb) run /www/htdocs/nonsecure/con.html
> Starting program: /space/custom_builds/php-5.2.4/sapi/cli/php
> /www/htdocs/nonsecure/con.html
> [Thread debugging using libthread_db enabled]
> [New Thread 2305843009273028592 (LWP 27213)]
> 
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 2305843009273028592 (LWP 27213)]
> 0x40000000005f6ba0 in _zval_ptr_dtor (zval_ptr=0x607ffffffebdb7f0) at
> /space/custom_builds/php-5.2.4/Zend/zend_execute_API.c:413
> 413             (*zval_ptr)->refcount--;
> (gdb) where
> #0  0x40000000005f6ba0 in _zval_ptr_dtor
> (zval_ptr=0x607ffffffebdb7f0) at
> /space/custom_builds/php-5.2.4/Zend/zend_execute_API.c:413 #1 
> 0x400000000068d700 in zend_do_fcall_common_helper_SPEC
>     (execute_data=0x607ffffffebdc370) at
> /space/custom_builds/php-5.2.4/Zend/zend_execute.h:155 #2 
> 0x4000000000666a00 in execute (op_array=0x20000000039d4e40) at
> /space/custom_builds/php-5.2.4/Zend/zend_vm_execute.h:92 #3 
> 0x40000000006188e0 in zend_execute_scripts (type=8, retval=0x0,
> file_count=3) at /space/custom_builds/php-5.2.4/Zend/zend.c:1134 #4 
> 0x4000000000577bb0 in php_execute_script (primary_file=Cannot access
> memory at address 0x10 ) at
> /space/custom_builds/php-5.2.4/main/main.c:1982 #5 
> 0x400000000076fa30 in main (argc=Cannot access memory at address 0x0
> ) at /space/custom_builds/php-5.2.4/sapi/cli/php_cli.c:1140 (gdb)
> 
> > From the stacktrace above looks like something is overflowing its
> > bounds... 
> 
> I will try your suggested alternative option next and just build php
> with oracle only to see if I get the same problem.

Yeah - I'd almost bet that it looks like a bad pointer/int on 64bit which is
probably a bug in PHP/Zend.  Try doing a minimal configure which can also
help in reporting a bug.

> I also have started to download the full client from Oracle instead
> of the instantclient to see if it makes any sort of difference.

Would be interested to know if this makes a difference - I think there's
been some rumblings of problems with instantclient.

H




More information about the talk mailing list