segfault in drizzled::TransactionServices::ha_rollback_to_savepoint
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Drizzle |
Fix Released
|
Critical
|
Jay Pipes | ||
Cherry |
Fix Released
|
Critical
|
Jay Pipes |
Bug Description
This is hit while running randgen:
(gdb) bt full
#0 0x00007fd71a42af87 in *__GI_memmove (dest=0x0, src=0x1c003a0,
len=
__x = 64 '@'
__nbytes = 8
dstp = 0
srcp = 29361057
#1 0x0000000000668ed4 in __copy_
this=<value optimized out>, session=0x1c32e40, sv=...)
at /usr/include/
No locals.
#2 __copy_
at /usr/include/
No locals.
#3 __copy_
(this=<value optimized out>, session=0x1c32e40, sv=...)
at /usr/include/
No locals.
#4 copy<__
this=<value optimized out>, session=0x1c32e40, sv=...)
at /usr/include/
No locals.
#5 set_difference<
at /usr/include/
No locals.
#6 drizzled:
this=<value optimized out>, session=0x1c32e40, sv=...)
at drizzled/
error = 0
#7 0x0000000000647279 in drizzled:
this=0x1bfe9f0) at drizzled/
found = <value optimized out>
_M_impl = {<std::
_M_impl = {<std::
#8 0x000000000060e224 in mysql_execute_
at drizzled/
lex = 0x1c33978
res = <value optimized out>
all_tables = <value optimized out>
#9 0x000000000060fa65 in drizzled:
inBuf=0x1c34bd8 "ROLLBACK TO SAVEPOINT A", length=23)
at drizzled/
lex = 0x1c33978
lip = {m_session = 0x1c32e40, yylineno = 1, yytoklen = 1,
yylval = 0x7fd70362abb0, lookahead_token = 366,
m_ptr = 0x1c34bf0 "nodb_int_autoinc` WHERE 1 = 1 LIMIT 8",
m_tok_end = 0x1c34bf0 "nodb_int_autoinc` WHERE 1 = 1 LIMIT 8",
m_buf = 0x1c34bd8 "ROLLBACK TO SAVEPOINT A", m_buf_length = 23,
m_echo = true, m_cpp_buf = 0x1c3a078 "ROLLBACK TO SAVEPOINT A",
m_cpp_ptr = 0x1c3a08f "", m_cpp_tok_start = 0x1c3a08f "",
nst char*, uint32_t)"
#10 0x000000000060fec5 in drizzled:
command=<value optimized out>, session=0x1c32e40,
packet=
at drizzled/
error = false
#11 0x00000000005e1f4f in drizzled:
at drizzled/
l_packet = 0x1c2ee30 "\003ROLLBACK TO SAVEPOINT A"
#12 0x00000000005e4052 in drizzled:
at drizzled/
No locals.
#13 0x00007fd707703372 in MultiThreadSche
arg=<value optimized out>) at ./plugin/
No locals.
#14 session_thread (arg=<value optimized out>)
at plugin/
sched = 0x1b5e9f0
#15 0x00007fd71a71fa04 in start_thread (arg=<value optimized out>)
at pthread_
__res = <value optimized out>
pd = 0x7fd70362b910
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140561451497744,
data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
robust = <value optimized out>
Related branches
- Stewart Smith (community): Approve
- Brian Aker: Pending requested
-
Diff: 147 lines (+42/-21)3 files modifieddrizzled/transaction_services.cc (+7/-0)
tests/r/savepoints.result (+13/-0)
tests/t/savepoints.test (+22/-21)
Changed in drizzle: | |
assignee: | nobody → Jay Pipes (jaypipes) |
Through much hair-pulling, here is the reproduceable test case. This is only reproduceable on intel05, though...not sure why, but it's reproduceable there at least...
#
# Test for Bug #542299
#
# segfault on ROLLBACK TO SAVEPOINT A - during randgen
#
--echo Start Test of Bug 542299
CREATE TABLE t1 (a int,id integer auto_increment,b int,/*Indices*/key (a ),primary key (id)) ENGINE=innodb;
INSERT INTO t1 VALUES (100, NULL, 100) , (100, NULL, 100) , (100, NULL, 100) , (100, NULL, 100) , (100, NULL, 100) , (100, NULL, 100) , (100, NULL, 100) , (100, NULL, 100);
SET AUTOCOMMIT=OFF;
DELETE FROM t1 WHERE 1 = 1 LIMIT 1;
COMMIT; /* OR ROLLBACK... */
SAVEPOINT A;
INSERT INTO t1 ( a, b ) VALUES ( 1 , 9 );
ROLLBACK TO SAVEPOINT A;
--echo End Test of Bug 542299