From: [EMAIL PROTECTED] Operating system: Linux PHP version: 5.2.5 PHP Bug Type: PDO related Bug description: PDO_OCI crashes
Description: ------------ PDO/OCI segfaults while describing columns. I gave a stab at a quick reproducing script, but did not manage unfortunately. I get this issue by running the WorkflowDatabaseTiein component test suite with: php -dmemory_limit=-1 UnitTest/src/runtests.php -v -D oracle://ezc:[EMAIL PROTECTED]/ezctest WorkflowDatabaseTiein/tests/execution_test.php Reproduce code: --------------- Database schema: CREATE TABLE "execution" ( "execution_id" number NOT NULL, "execution_next_thread_id" number NOT NULL, "execution_parent" number NOT NULL, "execution_started" number NOT NULL, "execution_threads" clob, "execution_variables" clob, "execution_waiting_for" clob, "workflow_id" number NOT NULL ) CREATE SEQUENCE "execution_execution_id_seq" start with 1 increment by 1 nomaxvalue CREATE OR REPLACE TRIGGER "execution_execution_id_trg" before insert on "execution" for each row begin select "execution_execution_id_seq".nextval into :new."execution_id" from dual; end; ALTER TABLE "execution" ADD CONSTRAINT "execution_pkey" PRIMARY KEY ( "execution_id" ) CREATE INDEX "execution_parent" ON "execution" ( "execution_parent" ) CREATE TABLE "execution_state" ( "execution_id" number NOT NULL, "node_activated_from" clob NOT NULL, "node_id" number NOT NULL, "node_state" clob, "node_thread_id" number NOT NULL ) ALTER TABLE "execution_state" ADD CONSTRAINT "execution_state_pkey" PRIMARY KEY ( "execution_id", "node_id" ) CREATE TABLE "node" ( "node_class" varchar2(255) NOT NULL, "node_configuration" clob, "node_id" number NOT NULL, "workflow_id" number NOT NULL ) CREATE SEQUENCE "node_node_id_seq" start with 1 increment by 1 nomaxvalue CREATE OR REPLACE TRIGGER "node_node_id_trg" before insert on "node" for each row begin select "node_node_id_seq".nextval into :new."node_id" from dual; end; ALTER TABLE "node" ADD CONSTRAINT "node_pkey" PRIMARY KEY ( "node_id" ) CREATE INDEX "workflow_id" ON "node" ( "workflow_id" ) CREATE TABLE "node_connection" ( "in_node_id" number NOT NULL, "out_node_id" number NOT NULL ) CREATE INDEX "in_node_id" ON "node_connection" ( "in_node_id" ) CREATE TABLE "variable_handler" ( "class" varchar2(255) NOT NULL, "variable" varchar2(255) NOT NULL, "workflow_id" number NOT NULL ) ALTER TABLE "variable_handler" ADD CONSTRAINT "variable_handler_pkey" PRIMARY KEY ( "class", "workflow_id" ) CREATE TABLE "workflow" ( "workflow_created" number NOT NULL, "workflow_id" number NOT NULL, "workflow_name" varchar2(64) NOT NULL, "workflow_version" number DEFAULT 1 NOT NULL ) CREATE SEQUENCE "workflow_workflow_id_seq" start with 1 increment by 1 nomaxvalue CREATE OR REPLACE TRIGGER "workflow_workflow_id_trg" before insert on "workflow" for each row begin select "workflow_workflow_id_seq".nextval into :new."workflow_id" from dual; end; ALTER TABLE "workflow" ADD CONSTRAINT "workflow_pkey" PRIMARY KEY ( "workflow_id" ) CREATE UNIQUE INDEX "name_version" ON "workflow" ( "workflow_name", "workflow_version" ) Actual result: -------------- Segfault: backtrace: #0 0xb7447574 in kghualloc () from /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1 No symbol table info available. #1 0xb73e865f in kohalc () from /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1 No symbol table info available. #2 0xb73e7f4f in kohalc () from /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1 No symbol table info available. #3 0xb73e8902 in kohalw () from /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1 No symbol table info available. #4 0xb7283b83 in kollalfn () from /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1 No symbol table info available. #5 0xb6d401d3 in kpugdesc () from /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1 No symbol table info available. #6 0xb6e0e5a6 in OCIDescriptorAlloc () from /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1 No symbol table info available. #7 0x08209985 in oci_stmt_describe (stmt=0xb30291a8, colno=2) at /root/src/php-5.2.5/ext/pdo_oci/oci_statement.c:553 S = (pdo_oci_stmt *) 0xb32c384c param = (OCIParam *) 0x8959404 colname = (text *) 0x8963b4c "node_configuration" dtype = 112 data_size = 4000 scale = 0 precis = 0 namelen = 18 col = (struct pdo_column_data *) 0xb3031b40 dyn = 0 '\0' #8 0x081f94c0 in pdo_stmt_describe_columns (stmt=0xb30291a8) at /root/src/php-5.2.5/ext/pdo/pdo_stmt.c:198 col = 2 #9 0x081fa38c in zim_PDOStatement_execute (ht=0, return_value=0xb3027f54, return_value_ptr=0x0, this_ptr=0xb32cb20c, return_value_used=0) at /root/src/php-5.2.5/ext/pdo/pdo_stmt.c:509 input_params = (zval *) 0x0 ret = 1 stmt = (pdo_stmt_t *) 0xb30291a8 #10 0x0847d9e6 in execute_internal (execute_data_ptr=0xbfbd4f14, return_value_used=0) at /root/src/php-5.2.5/Zend/zend_execute.c:1385 return_value_ptr = (zval **) 0xbfbd3f94 #11 0xb6525765 in xdebug_execute_internal (current_execute_data=0xbfbd4f14, return_value_used=0) at /tmp/pear/cache/xdebug-2.0.3/xdebug.c:1605 edata = (zend_execute_data *) 0xbfbd4f14 fse = (function_stack_entry *) 0x89d1ca8 cur_opcode = (zend_op *) 0x0 do_return = 1 function_nr = 9158 #12 0x0847e093 in zend_do_fcall_common_helper_SPEC (execute_data=0xbfbd4f14) at /root/src/php-5.2.5/Zend/zend_vm_execute.h:202 return_reference = 0 '\0' opline = (zend_op *) 0xb31a6400 original_return_value = (zval **) 0x847fa09 current_scope = (zend_class_entry *) 0xb3197098 current_this = (zval *) 0xb3021d94 return_value_used = 0 should_change_scope = 1 '\001' ctor_opline = (zend_op *) 0xb654c19c #13 0x0847ecc7 in ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER (execute_data=0xbfbd4f14) at /root/src/php-5.2.5/Zend/zend_vm_execute.h:322 No locals. #14 0x0847dbe0 in execute (op_array=0xb3215f08) at /root/src/php-5.2.5/Zend/zend_vm_execute.h:92 execute_data = {opline = 0xb31a6400, function_state = {function_symbol_table = 0xb32c2504, function = 0x88125e0, reserved = {0xbfbd7274, 0xbfbd50d4, 0xbfbd4f58, 0xb6523748}}, fbc = 0x88125e0, op_array = 0xb3215f08, object = 0xb32cb20c, Ts = 0xbfbd3860, CVs = 0xbfbd3810, original_in_execution = 1 '\001', symbol_table = 0xb32ab6f8, prev_execute_data = 0xbfbd5f34, old_error_reporting = 0x0} #15 0xb65253f7 in xdebug_execute (op_array=0xb3215f08) at /tmp/pear/cache/xdebug-2.0.3/xdebug.c:1541 dummy = (zval **) 0x0 edata = (zend_execute_data *) 0xbfbd5f34 fse = (function_stack_entry *) 0x89ce800 xfse = (function_stack_entry *) 0x5 magic_cookie = 0x0 do_return = 1 function_nr = 9032 le = (xdebug_llist_element *) 0xbfbd5038 eval_id = 0 #16 0x0847e1f7 in zend_do_fcall_common_helper_SPEC (execute_data=0xbfbd5f34) at /root/src/php-5.2.5/Zend/zend_vm_execute.h:234 opline = (zend_op *) 0xb309d7f8 original_return_value = (zval **) 0xbfbd61a8 current_scope = (zend_class_entry *) 0xb310be10 current_this = (zval *) 0xb302b098 return_value_used = 1 should_change_scope = 1 '\001' ctor_opline = (zend_op *) 0xb654c19c #17 0x0847ecc7 in ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER (execute_data=0xbfbd5f34) at /root/src/php-5.2.5/Zend/zend_vm_execute.h:322 No locals. #18 0x0847dbe0 in execute (op_array=0xb3096670) at /root/src/php-5.2.5/Zend/zend_vm_execute.h:92 execute_data = {opline = 0xb309d7f8, function_state = {function_symbol_table = 0xb32ab6f8, function = 0xb3215f08, reserved = {0xbfbd7274, 0xbfbd60d8, 0xbfbd5f78, 0xb6523748}}, fbc = 0xb3215f08, op_array = 0xb3096670, object = 0xb3021d94, Ts = 0xbfbd50f0, CVs = 0xbfbd50b0, original_in_execution = 1 '\001', symbol_table = 0xb32ab8fc, prev_execute_data = 0xbfbd61d4, old_error_reporting = 0x0} #19 0xb65253f7 in xdebug_execute (op_array=0xb3096670) at /tmp/pear/cache/xdebug-2.0.3/xdebug.c:1541 dummy = (zval **) 0x0 edata = (zend_execute_data *) 0xbfbd61d4 fse = (function_stack_entry *) 0x89c3760 xfse = (function_stack_entry *) 0x19 magic_cookie = 0x0 do_return = 1 function_nr = 8930 le = (xdebug_llist_element *) 0xbfbd6058 eval_id = 0 #20 0x0847e1f7 in zend_do_fcall_common_helper_SPEC (execute_data=0xbfbd61d4) at /root/src/php-5.2.5/Zend/zend_vm_execute.h:234 opline = (zend_op *) 0xb3105fa0 original_return_value = (zval **) 0xbfbd67b8 current_scope = (zend_class_entry *) 0xb310be10 current_this = (zval *) 0xb302b098 return_value_used = 0 should_change_scope = 1 '\001' ctor_opline = (zend_op *) 0xb654c19c #21 0x0847ecc7 in ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER (execute_data=0xbfbd61d4) at /root/src/php-5.2.5/Zend/zend_vm_execute.h:322 No locals. (goes on for a bit - it's not a stack overflow) The functions that I am calling just around it segfaulting: -> ezcQuerySelectOracle->prepare() /root/ezcomponents/trunk/WorkflowDatabaseTiein/src/definition_storage.php:94 -> ezcQuery->prepare() /root/ezcomponents/trunk/Database/src/sqlabstraction/implementations/query_select_oracle.php:176 -> ezcQuerySelectOracle->getQuery() /root/ezcomponents/trunk/Database/src/sqlabstraction/query.php:432 -> ezcQuerySelect->getQuery() /root/ezcomponents/trunk/Database/src/sqlabstraction/implementations/query_select_oracle.php:143 >=> 'SELECT "node_id", "node_class", "node_configuration" FROM "node" WHERE "workflow_id" = :ezcValue1' >=> 'SELECT "node_id", "node_class", "node_configuration" FROM "node" WHERE "workflow_id" = :ezcValue1' -> PDO->prepare('SELECT "node_id", "node_class", "node_configuration" FROM "node" WHERE "workflow_id" = :ezcValue1') /root/ezcomponents/trunk/Database/src/sqlabstraction/query.php:432 >=> class PDOStatement { public $queryString = 'SELECT "node_id", "node_class", "node_configuration" FROM "node" WHERE "workflow_id" = :ezcValue1' } -> ezcQuery->doBind($stmt = class PDOStatement { public $queryString = 'SELECT "node_id", "node_class", "node_configuration" FROM "node" WHERE "workflow_id" = :ezcValue1' }) /root/ezcomponents/trunk/Database/src/sqlabstraction/query.php:433 -> PDOStatement->bindValue(':ezcValue1', 1, 2) /root/ezcomponents/trunk/Database/src/sqlabstraction/query.php:393 >=> TRUE >=> NULL >=> class PDOStatement { public $queryString = 'SELECT "node_id", "node_class", "node_configuration" FROM "node" WHERE "workflow_id" = :ezcValue1' } >=> class PDOStatement { public $queryString = 'SELECT "node_id", "node_class", "node_configuration" FROM "node" WHERE "workflow_id" = :ezcValue1' } -> PDOStatement->execute() /root/ezcomponents/trunk/WorkflowDatabaseTiein/src/definition_storage.php:95 valgrind: ==8810== ==8810== Invalid write of size 4 ==8810== at 0x4EC3574: kghualloc (in /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x4E6465E: (within /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x4E63F4E: kohalc (in /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x4E64901: kohalw (in /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x4CFFB82: kollalfn (in /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x47BC1D2: kpugdesc (in /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x488A5A5: OCIDescriptorAlloc (in /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x8209984: oci_stmt_describe (oci_statement.c:553) ==8810== by 0x81F94BF: pdo_stmt_describe_columns (pdo_stmt.c:198) ==8810== by 0x81FA38B: zim_PDOStatement_execute (pdo_stmt.c:509) ==8810== by 0x847D9E5: execute_internal (zend_execute.c:1385) ==8810== by 0x5AB6764: xdebug_execute_internal (xdebug.c:1605) ==8810== Address 0x3D34 is not stack'd, malloc'd or (recently) free'd ==8810== ==8810== Process terminating with default action of signal 11 (SIGSEGV) ==8810== Access not within mapped region at address 0x3D34 ==8810== at 0x4EC3574: kghualloc (in /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x4E6465E: (within /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x4E63F4E: kohalc (in /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x4E64901: kohalw (in /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x4CFFB82: kollalfn (in /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x47BC1D2: kpugdesc (in /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x488A5A5: OCIDescriptorAlloc (in /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x8209984: oci_stmt_describe (oci_statement.c:553) ==8810== by 0x81F94BF: pdo_stmt_describe_columns (pdo_stmt.c:198) ==8810== by 0x81FA38B: zim_PDOStatement_execute (pdo_stmt.c:509) ==8810== by 0x847D9E5: execute_internal (zend_execute.c:1385) ==8810== by 0x5AB6764: xdebug_execute_internal (xdebug.c:1605) ==8810== ==8810== Invalid free() / delete / delete[] ==8810== at 0x401CFA5: free (vg_replace_malloc.c:233) ==8810== by 0x560CE4D: (within /lib/tls/libc-2.3.6.so) ==8810== by 0x560C601: __libc_freeres (in /lib/tls/libc-2.3.6.so) ==8810== by 0x40191F6: _vgnU_freeres (vg_preloaded.c:60) ==8810== by 0x5393863: (within /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x4E6465E: (within /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x4E63F4E: kohalc (in /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x4E64901: kohalw (in /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x4CFFB82: kollalfn (in /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x47BC1D2: kpugdesc (in /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x488A5A5: OCIDescriptorAlloc (in /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1) ==8810== by 0x8209984: oci_stmt_describe (oci_statement.c:553) ==8810== Address 0x5722720 is not stack'd, malloc'd or (recently) free'd -- Edit bug report at http://bugs.php.net/?id=44852&edit=1 -- Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=44852&r=trysnapshot52 Try a CVS snapshot (PHP 5.3): http://bugs.php.net/fix.php?id=44852&r=trysnapshot53 Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=44852&r=trysnapshot60 Fixed in CVS: http://bugs.php.net/fix.php?id=44852&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=44852&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=44852&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=44852&r=needscript Try newer version: http://bugs.php.net/fix.php?id=44852&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=44852&r=support Expected behavior: http://bugs.php.net/fix.php?id=44852&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=44852&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=44852&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=44852&r=globals PHP 4 support discontinued: http://bugs.php.net/fix.php?id=44852&r=php4 Daylight Savings: http://bugs.php.net/fix.php?id=44852&r=dst IIS Stability: http://bugs.php.net/fix.php?id=44852&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=44852&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=44852&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=44852&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=44852&r=mysqlcfg