#33383 [Opn->Fbk]: PHP crashes while retrieving data from Oracle
| From: | derick@php.net | Date: | Fri, 09 Sep 2005 06:28:55 +0000 |
| Subject: | #33383 [Opn->Fbk]: PHP crashes while retrieving data from Oracle | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-84769@lists.php.net to get a copy of this message | ||
ID: 33383
Updated by: derick@php.net
Reported By: johnny at ouranous dot idv dot tw
-Status: Open
+Status: Feedback
Bug Type: OCI8 related
Operating System: Solaris 9
PHP Version: 5.0.4
Assigned To: tony2001
New Comment:
http://www.php.net/anoncvs.php
(And please leave at Feedback until you can provide more information)
Previous Comments:
------------------------------------------------------------------------
[2005-09-09 05:07:50] johnny at ouranous dot idv dot tw
Sorry, I'm having a business trip now, will not be able to test until
October.
And I have no experience of build php from CVS, where can I get
information about it?
------------------------------------------------------------------------
[2005-09-08 11:51:36] tony2001@php.net
Please try OCI8 v.1.1, which is available in CVS HEAD and PECL (use
pear install oci8-beta to install it).
------------------------------------------------------------------------
[2005-06-20 11:39:06] johnny at ouranous dot idv dot tw
http://snaps.php.net/php5-latest.tar.gz did
not work, either.
After some simple but stupid work by added some oci_debug in
ext/oci8/oci8.c, I found the program crashed at line 2254:
CALL_OCI_RETURN(connection->error,
OCILobRead(
connection->pServiceContext,
connection->pError,
mydescr->ocidescr,
&readlen, /* IN/OUT bytes toread/read */
siz + 1, /* offset (starts with 1) */
(dvoid *) ((char *) buf + siz),
readlen, /* size of buffer */
(dvoid *)0,
(OCICallbackLobRead) 0, /* callback... */
(ub2) connection->session->charsetId, /* The character set ID of
the buffer data. */
(ub1) SQLCS_IMPLICIT /* The character set form of the buffer
data. */
)
);
when readlen == 1 and whenever the real data store in lob field is ' '
or not. (I was mistake in previous post, there is a ' ' in the clob
field)
I tried add
readlen++;
before
buf = emalloc(readlen + 1);
and it works in all my test case
but I don't know if this is the correctly way to solve it.
------------------------------------------------------------------------
[2005-06-19 21:36:26] sniper@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php5-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php5-win32-latest.zip
------------------------------------------------------------------------
[2005-06-19 17:30:59] johnny at gorilla dot com dot tw
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.
------------------------------------------------------------------------
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/33383
--
Edit this bug report at http://bugs.php.net/?id=33383&edit=1