[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Crash on entry modification in back-sql/unixODBC/oracle (ITS#2641)
Full_Name: Emmanuel Duru
Version: 2.2.0 alpha
OS: solaris 8
URL:
Submission from: (NULL) (195.68.44.148)
Crash on entry modification in back-sql/unixODBC/oracle.
The problem is that the back-end performs SQLBindParameter + SQLExecDirect on
at_delete query, whereas it should perform SQLPrepare + SQLBindParameter +
SQLExecute.
Here is the stack trace:
(gdb) where
#0 0xff2b9794 in __sigprocmask () from /usr/lib/libthread.so.1
#1 0xff2ae9a8 in _resetsig () from /usr/lib/libthread.so.1
#2 0xff2ae148 in _sigon () from /usr/lib/libthread.so.1
#3 0xff2b1188 in _thrp_kill () from /usr/lib/libthread.so.1
#4 0xff04b760 in raise () from /usr/lib/libc.so.1
#5 0xff035a84 in abort () from /usr/lib/libc.so.1
#6 0x22f548 in Letext ()
#7 0xfec9c0a0 in ood_driver_bind_param (stmt=0x493a28, parmnum=3) at
oracle_functions.c:2653
#8 0xfec9810c in ood_driver_execute (stmt=0x493a28) at oracle_functions.c:506
#9 0xfec898d8 in SQLExecDirect (StatementHandle=0x493a28,
StatementText=0x304a58 "{call delete_phone(?,?)}", TextLength=-3)
at SQLExecDirect.c:104
#10 0xff325ae8 in SQLExecDirect (statement_handle=0x493570,
statement_text=0x304a58 "{call delete_phone(?,?)}", text_length=-3)
at SQLExecDirect.c:336
#11 0x9cce4 in backsql_modify_internal (op=0x0, rs=0xfd801ad8, dbh=0x317850,
oc=0x33ce90, e_id=0xfd801688, modlist=0x33da30)
at modify.c:244
#12 0x9d744 in backsql_modify (op=0x3413a8, rs=0xfd801ad8) at modify.c:529
#13 0x5e38c in do_modify (op=0x3413a8, rs=0xfd801ad8) at modify.c:436
#14 0x4e1f4 in connection_operation (ctx=0xfd801b80, arg_v=0x3413a8) at
connection.c:968
#15 0xd8428 in ldap_int_thread_pool_wrapper (xpool=0x2cccb8) at tpool.c:463
(gdb) up
#1 0xff2ae9a8 in _resetsig () from /usr/lib/libthread.so.1
(gdb) up
#2 0xff2ae148 in _sigon () from /usr/lib/libthread.so.1
(gdb) up
#3 0xff2b1188 in _thrp_kill () from /usr/lib/libthread.so.1
(gdb) up
#4 0xff04b760 in raise () from /usr/lib/libc.so.1
(gdb) up
#5 0xff035a84 in abort () from /usr/lib/libc.so.1
(gdb) up
#6 0x22f548 in Letext ()
(gdb) up
#7 0xfec9c0a0 in ood_driver_bind_param (stmt=0x493a28, parmnum=3) at
oracle_functions.c:2653
2653 assert(IS_VALID(ap));
(gdb) up
#8 0xfec9810c in ood_driver_execute (stmt=0x493a28) at oracle_functions.c:506
506 ret|=ood_driver_bind_param(stmt,i);
(gdb) up
#9 0xfec898d8 in SQLExecDirect (StatementHandle=0x493a28,
StatementText=0x304a58 "{call delete_phone(?,?)}", TextLength=-3)
at SQLExecDirect.c:104
104 status|=ood_driver_execute(stmt);
(gdb) up
#10 0xff325ae8 in SQLExecDirect (statement_handle=0x493570,
statement_text=0x304a58 "{call delete_phone(?,?)}", text_length=-3)
at SQLExecDirect.c:336
336 ret = SQLEXECDIRECT( statement -> connection,
(gdb) up
#11 0x9cce4 in backsql_modify_internal (op=0x0, rs=0xfd801ad8, dbh=0x317850,
oc=0x33ce90, e_id=0xfd801688, modlist=0x33da30)
at modify.c:244
244 rc = SQLExecDirect( sth,
(gdb) list 230
225 SQLBindParameter( sth, pno + 1 +
po,
226 SQL_PARAM_INPUT,
227 SQL_C_ULONG,
SQL_INTEGER,
228 0, 0, &e_id->keyval, 0,
0 );
229
230 /*
231 * check for syntax needed here
232 * maybe need binary bind?
233 */
234 SQLBindParameter(sth, pno + 2 -
po,
(gdb) list
235 SQL_PARAM_INPUT,
236 SQL_C_CHAR, SQL_CHAR,
237 0, 0, row.cols[ i ],
238 strlen( row.cols[ i ] ),
0 );
239
240 Debug( LDAP_DEBUG_TRACE,
241
"backsql_modify_internal(): "
242 "executing '%s'\n",
243 at->delete_proc, 0, 0
);
244 rc = SQLExecDirect( sth,
(gdb) list
245 at->delete_proc, SQL_NTS
);