#33383 [Fbk->Opn]: PHP crashes while retrieving data from Oracle
| From: | johnny at gorilla dot com dot tw | Date: | Sun, 19 Jun 2005 15:31:03 +0000 |
| Subject: | #33383 [Fbk->Opn]: PHP crashes while retrieving data from Oracle | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-80642@lists.php.net to get a copy of this message | ||
ID: 33383
User updated by: johnny at gorilla dot com dot tw
Reported By: johnny at gorilla dot com dot tw
-Status: Feedback
+Status: Open
Bug Type: OCI8 related
Operating System: Solaris 9
PHP Version: 5.0.4
New Comment:
Configuration:
CFLAGS="
getconf LFS_CFLAGS" ./configure --prefix=/usr/local/php5
--with-oci8=/data/oracle/OraHome1 --with-ncurses=/usr/local/lib
--enable-mbstring=all --enable-debug
$gdb /usr/local/php5/bin/php core
GNU gdb 6.0
Copyright 2003 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 "sparc-sun-solaris2.9"...
Core was generated by `/usr/local/php5/bin/php -q test.php'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/local/lib/libpanel.so.5...done.
Loaded symbols for /usr/local/lib/libpanel.so.5
Reading symbols from /usr/local/lib/libncurses.so.5...done.
Loaded symbols for /usr/local/lib/libncurses.so.5
Reading symbols from /usr/lib/libresolv.so.2...done.
Loaded symbols for /usr/lib/libresolv.so.2
Reading symbols from /usr/lib/libm.so.1...done.
Loaded symbols for /usr/lib/libm.so.1
Reading symbols from /usr/lib/libdl.so.1...done.
Loaded symbols for /usr/lib/libdl.so.1
Reading symbols from /usr/lib/libnsl.so.1...done.
Loaded symbols for /usr/lib/libnsl.so.1
Reading symbols from /usr/lib/libsocket.so.1...done.
Loaded symbols for /usr/lib/libsocket.so.1
Reading symbols from /usr/lib/libz.so.1...done.
Loaded symbols for /usr/lib/libz.so.1
Reading symbols from /usr/lib/libgen.so.1...done.
Loaded symbols for /usr/lib/libgen.so.1
Reading symbols from /usr/lib/libsched.so.1...done.
Loaded symbols for /usr/lib/libsched.so.1
Reading symbols from
/data/oracle/OraHome1/lib32/libclntsh.so.9.0...done.
Loaded symbols for /data/oracle/OraHome1/lib32/libclntsh.so.9.0
Reading symbols from /usr/local/lib/libxml2.so.2...done.
Loaded symbols for /usr/local/lib/libxml2.so.2
Reading symbols from /usr/lib/libpthread.so.1...done.
Loaded symbols for /usr/lib/libpthread.so.1
Reading symbols from /usr/local/lib/libiconv.so.2...done.
Loaded symbols for /usr/local/lib/libiconv.so.2
---Type <return> to continue, or q <return> to quit---
Reading symbols from /usr/lib/libc.so.1...done.
Loaded symbols for /usr/lib/libc.so.1
Reading symbols from /usr/lib/libmp.so.2...done.
Loaded symbols for /usr/lib/libmp.so.2
Reading symbols from /data/oracle/OraHome1/lib32/libwtc9.so...done.
Loaded symbols for /data/oracle/OraHome1/lib32/libwtc9.so
Reading symbols from /usr/lib/libaio.so.1...done.
Loaded symbols for /usr/lib/libaio.so.1
Reading symbols from /usr/lib/librt.so.1...done.
Loaded symbols for /usr/lib/librt.so.1
Reading symbols from /usr/local/lib/libgcc_s.so.1...done.
Loaded symbols for /usr/local/lib/libgcc_s.so.1
Reading symbols from /usr/lib/libmd5.so.1...done.
Loaded symbols for /usr/lib/libmd5.so.1
Reading symbols from
/usr/platform/SUNW,Sun-Fire-V240/lib/libc_psr.so.1...done.
Loaded symbols for /usr/platform/SUNW,Sun-Fire-V240/lib/libc_psr.so.1
Reading symbols from /usr/lib/libthread.so.1...done.
Loaded symbols for /usr/lib/libthread.so.1
#0 0xfe924eb4 in ttci2u () from
/data/oracle/OraHome1/lib32/libclntsh.so.9.0
(gdb) bt
#0 0xfe924eb4 in ttci2u () from
/data/oracle/OraHome1/lib32/libclntsh.so.9.0
#1 0xfe604060 in kpulbcr () from
/data/oracle/OraHome1/lib32/libclntsh.so.9.0
#2 0xfe8f0ab0 in ttcdrv () from
/data/oracle/OraHome1/lib32/libclntsh.so.9.0
(gdb)
And I found one thing, everytime crashed, always because there is an
empty value of clob fileds. But I don't know if this is caused by OCI
itself, I'll try to write a small C program to test it tomorrow
morning.
Previous Comments:
------------------------------------------------------------------------
[2005-06-17 13:08:25] tony2001@php.net
Thank you for this bug report. To properly diagnose the problem, we
need a backtrace to see what is happening behind the scenes. To
find out how to generate a backtrace, please read
http://bugs.php.net/bugs-generating-backtrace.php
Once you have generated a backtrace, please submit it to this bug
report and change the status back to "Open". Thank you for helping
us make PHP better.
And please try fresh snapshot from http://snaps.php.net
------------------------------------------------------------------------
[2005-06-17 13:05:18] johnny at gorilla dot com dot tw
Description:
------------
I think this bug is simular to Bug #6561 but in Solaris
I've test 3 different version of php in CGI/CLI mode all happended.
Here is my enviornment & configuration:
Sun V240(sparc)
Solaris 9
gcc 3.4.2
Oracle 9.2.0.4
php 4.3.11
CFLAGS="getconf LFS_CFLAGS" ./configure --prefix=/usr/local/php4
--with-oci8=/data/oracle/OraHome1 --with-ncurses=/usr/local/lib
--enable-pcntl --with-readline=/usr/local/lib --enable-mbstring=all
php 5.0.3
CFLAGS="getconf LFS_CFLAGS" ./configure --prefix=/usr/local/php5
--with-oci8=/data/oracle/OraHome1 --with-ncurses=/usr/local/lib
--enable-pcntl --with-readline=/usr/local/lib --enable-mbstring=all
php 5.0.4
CFLAGS="getconf LFS_CFLAGS" ./configure --prefix=/usr/local/php5
--with-oci8=/data/oracle/OraHome1 --with-ncurses=/usr/local/lib
--enable-mbstring=all (cannot build with --enable-pcntl
--with-readline=/usr/local/lib)
modified
1. <phpdir>/configure
2. <phpdir>/ext/oci8/config.m4
OCI8_DIR/lib -> OCI8_DIR/lib32
OCI8_DIR/rdbms/lib -> OCI8_DIR/rdbms/lib32
CGI/CLI crashed (core dumped) at some CLOB field
at ociFetchInto when ociFetchInto with OCI_RETURN_LOBS, and crashed at
->load() when ociFetchInto without OCI_RETURN_LOBS, same code runs fine
is PHP4/PHP5 on windows
Reproduce code:
---------------
Very hard to reproduce exactly. It happens while retrieving data from
an
Oracle 8 database. The same code works fine in Windows Environment.
Expected result:
----------------
$query = "SELECT field1, clob1, field2 FROM table1";
$stmt = OCIParse ($conn, $query);
OCIExecute($stmt, OCI_DEFAULT);
while( true )
{
if( !OCIFetchInto($stmt, $arr, OCI_ASSOC|OCI_RETURN_LOBS) )
break;
while( list($key,$val)=each($arr) )
{
echo "Key:".$key."\tVal:".$val."\n";
}
echo "\n";
}
Actual result:
--------------
Key: xxxx Val: yyyyyy
Key: xxxx Val: yyyyyy
Key: xxxx Val: yyyyyy
Key: xxxx Val: yyyyyy
....
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=33383&edit=1