Erroneous sql dump crashes drizzled
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Drizzle |
Fix Released
|
Critical
|
Eric Day |
Bug Description
I'm using up to date drizzle trunk (2008-12-12) on Fedora 10 x86_64.
The attached PHP script will generate a basic dump file. This dump file is missing semi-colons off the INSERTs so it is expected to generate some kind of error. When inserting with "drizzle < drizzle.sql" I instead get the following error:
ERROR 2006 (HY000) at line 100000: Drizzle server has gone away
and the following crash in drizzled:
drizzled: sql_parse.cc:386: bool do_command(
081212 0:00:40 - drizzled got signal 6 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help diagnose
the problem, but since we have already crashed, something is definitely wrong
and this may fail.
key_buffer_
read_buffer_
max_used_
max_threads=8
thread_count=1
connection_count=1
It is possible that drizzled could use up to
key_buffer_size + (read_buffer_size + sort_buffer_
bytes of memory
Hope that's ok; if not, decrease some variables in the equation.
session: 0x1b20520
Attempting backtrace. You can use the following information to find out
where drizzled died. If you see no messages after this, something went
terribly wrong...
../drizzle/
../drizzle/
/lib64/
/lib64/
/lib64/
/lib64/
../drizzle/
../drizzle/
/lib64/
/lib64/
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort...
session->query at (nil) is invalid pointer
session-
session-
Changed in drizzle: | |
assignee: | jaypipes → eday |
milestone: | none → aloha |
This bug has continually been a pain in my ass as well, while developing the test automation framework. I traced the server with GDB and the assert() occurs after net_real_read() happens and returns a packet_length == ~(uint32_t) 0, which happens to be the definition of packet_error.
Trying to verify what was going on, I traced the error further and ended up in the macros defined in /drizzled/korr.h, which left me scratching my head, since drizzled wasn't compiled with debug symbols and thus the macros were optimized away and I couldn't get any information out of GDB.
I've recompiled drizzled with debug symbols but haven't had time to do another trace. Would be very helpful to get some input from others on this. At some point, we've changed the protocol or warning/error handling and the changes have borked the communication between server and client.