NYCPHP Meetup

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

Joshua Hart hart at saturn.med.nyu.edu
Sat Sep 8 23:08:44 EDT 2007




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.

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

Thanks,

Joshua





More information about the talk mailing list