Segfault when dumping schema with drizzledump
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Drizzle |
Fix Released
|
High
|
Andrew Hutchings | ||
7.0 |
Fix Released
|
High
|
Andrew Hutchings |
Bug Description
After figuring out my permissions issues (see https:/
root@mcp:~# drizzledump -p3306 -uroot -P<omitted>
-- drizzledump 2010.09.1802 libdrizzle 7, for pc-linux-gnu (x86_64)
--
-- Host: localhost Database: moocowproductions
-- -------
-- Server version 5.1.41-3ubuntu12.6 (MySQL server)
Segmentation fault
Here is an strace:
root@mcp:~# strace drizzledump -p3306 -uroot -P<omitted>
execve(
brk(0) = 0x1b27000
access(
mmap(NULL, 8192, PROT_READ|
access(
open("/
fstat(3, {st_mode=
mmap(NULL, 58632, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fb76cbc2000
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat(3, {st_mode=
mmap(NULL, 2187792, PROT_READ|
mprotect(
mmap(0x7fb76c9b
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat(3, {st_mode=
mmap(NULL, 2175856, PROT_READ|
mprotect(
mmap(0x7fb76c79
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat(3, {st_mode=
mmap(NULL, 4096, PROT_READ|
mmap(NULL, 2415096, PROT_READ|
mprotect(
mmap(0x7fb76c58
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat(3, {st_mode=
mmap(NULL, 2184088, PROT_READ|
mprotect(
mmap(0x7fb76c33
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat(3, {st_mode=
mmap(NULL, 3087928, PROT_READ|
mprotect(
mmap(0x7fb76c11
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat(3, {st_mode=
mmap(NULL, 4096, PROT_READ|
mmap(NULL, 2171488, PROT_READ|
mprotect(
mmap(0x7fb76be2
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat(3, {st_mode=
mmap(NULL, 2180304, PROT_READ|
mprotect(
mmap(0x7fb76bc1
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat(3, {st_mode=
mmap(NULL, 2109704, PROT_READ|
mprotect(
mmap(0x7fb76ba0
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat(3, {st_mode=
mmap(NULL, 4096, PROT_READ|
mmap(NULL, 2128848, PROT_READ|
mprotect(
mmap(0x7fb76b80
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat(3, {st_mode=
mmap(NULL, 3223608, PROT_READ|
mprotect(
mmap(0x7fb76b5e
mmap(0x7fb76b5e
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat(3, {st_mode=
mmap(NULL, 2629864, PROT_READ|
mprotect(
mmap(0x7fb76b2e
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat(3, {st_mode=
mmap(NULL, 4096, PROT_READ|
mmap(NULL, 2188280, PROT_READ|
mprotect(
mmap(0x7fb76b06
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat(3, {st_mode=
mmap(NULL, 3680296, PROT_READ|
mprotect(
mmap(0x7fb76ae4
mmap(0x7fb76ae4
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat(3, {st_mode=
mmap(NULL, 2212736, PROT_READ|
mprotect(
mmap(0x7fb76aac
mmap(0x7fb76aac
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat(3, {st_mode=
mmap(NULL, 4096, PROT_READ|
mmap(NULL, 18108416, PROT_READ, MAP_PRIVATE|
mprotect(
mmap(0x7fb76a8a
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat(3, {st_mode=
mmap(NULL, 3897408, PROT_READ|
mprotect(
mmap(0x7fb76975
mmap(0x7fb76976
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat(3, {st_mode=
mmap(NULL, 3516704, PROT_READ|
mprotect(
mmap(0x7fb7693a
mmap(0x7fb7693b
close(3) = 0
mmap(NULL, 4096, PROT_READ|
mmap(NULL, 4096, PROT_READ|
mmap(NULL, 8192, PROT_READ|
arch_prctl(
mprotect(
mprotect(
mprotect(
mprotect(
mprotect(
mprotect(
mprotect(
mprotect(
mprotect(
mprotect(
mprotect(
mprotect(
mprotect(
mprotect(
mprotect(
mprotect(
mprotect(
mprotect(0x653000, 4096, PROT_READ) = 0
mprotect(
munmap(
set_tid_
set_robust_
futex(0x7ffff0d
futex(0x7ffff0d
rt_sigaction(
rt_sigaction(
rt_sigprocmask(
getrlimit(
brk(0) = 0x1b27000
brk(0x1b48000) = 0x1b48000
futex(0x7fb76b5
open("~
open("~
open("/
open("/
socket(PF_NETLINK, SOCK_RAW, 0) = 3
bind(3, {sa_family=
getsockname(3, {sa_family=
gettimeofday(
sendto(3, "\24\0\
recvmsg(3, {msg_name(
recvmsg(3, {msg_name(
recvmsg(3, {msg_name(
close(3) = 0
socket(PF_FILE, SOCK_STREAM|
connect(3, {sa_family=AF_FILE, path="/
close(3) = 0
socket(PF_FILE, SOCK_STREAM|
connect(3, {sa_family=AF_FILE, path="/
close(3) = 0
open("/
fstat(3, {st_mode=
mmap(NULL, 4096, PROT_READ|
read(3, "# /etc/nsswitch.
read(3, "", 4096) = 0
close(3) = 0
munmap(
open("/
fstat(3, {st_mode=
mmap(NULL, 4096, PROT_READ|
read(3, "# The \"order\" line is only used "..., 4096) = 92
read(3, "", 4096) = 0
close(3) = 0
munmap(
futex(0x7fb76ae
open("/
fstat(3, {st_mode=
mmap(NULL, 4096, PROT_READ|
read(3, "nameserver 72.3.128.
read(3, "", 4096) = 0
read(3, "", 4096) = 0
close(3) = 0
munmap(
uname({sys="Linux", node="mcp.
open("/
fstat(3, {st_mode=
mmap(NULL, 58632, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fb76cbc2000
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat(3, {st_mode=
mmap(NULL, 2147720, PROT_READ|
mprotect(
mmap(0x7fb76905
close(3) = 0
mprotect(
munmap(
open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 3
fcntl(3, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fstat(3, {st_mode=
mmap(NULL, 4096, PROT_READ|
read(3, "127.0.0.1 localhost localhos"..., 4096) = 336
read(3, "", 4096) = 0
close(3) = 0
munmap(
open("/
fstat(3, {st_mode=
fstat(3, {st_mode=
mmap(NULL, 4096, PROT_READ|
read(3, "# Configuration for getaddrinfo("..., 4096) = 2987
read(3, "", 4096) = 0
close(3) = 0
munmap(
futex(0x7fb76ae
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
connect(3, {sa_family=AF_INET, sin_port=
getsockname(3, {sa_family=AF_INET, sin_port=
close(3) = 0
socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 3
connect(3, {sa_family=
getsockname(3, {sa_family=
close(3) = 0
socket(PF_INET6, SOCK_STREAM, IPPROTO_TCP) = 3
setsockopt(3, SOL_TCP, TCP_NODELAY, [1], 4) = 0
setsockopt(3, SOL_SOCKET, SO_LINGER, {onoff=1, linger=10}, 8) = 0
setsockopt(3, SOL_SOCKET, SO_SNDTIMEO, "\n\0\0\
setsockopt(3, SOL_SOCKET, SO_RCVTIMEO, "\n\0\0\
setsockopt(3, SOL_SOCKET, SO_SNDBUF, [32768], 4) = 0
setsockopt(3, SOL_SOCKET, SO_RCVBUF, [32768], 4) = 0
fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
connect(3, {sa_family=
poll([{fd=3, events=POLLOUT}], 1, -1) = 1 ([{fd=3, revents=
close(3) = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 3
setsockopt(3, SOL_TCP, TCP_NODELAY, [1], 4) = 0
setsockopt(3, SOL_SOCKET, SO_LINGER, {onoff=1, linger=10}, 8) = 0
setsockopt(3, SOL_SOCKET, SO_SNDTIMEO, "\n\0\0\
setsockopt(3, SOL_SOCKET, SO_RCVTIMEO, "\n\0\0\
setsockopt(3, SOL_SOCKET, SO_SNDBUF, [32768], 4) = 0
setsockopt(3, SOL_SOCKET, SO_RCVBUF, [32768], 4) = 0
fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
connect(3, {sa_family=AF_INET, sin_port=
poll([{fd=3, events=POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
recvfrom(3, 0x1b316e0, 32768, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "@\0\0\
sendto(3, ";\0\0\
recvfrom(3, "\7\0\0\
sendto(3, "\21\0\0\0\3SET NAMES 'utf8'", 21, 0, NULL, 0) = 21
recvfrom(3, 0x1b316e0, 32768, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "\7\0\0\
fstat(1, {st_mode=
mmap(NULL, 4096, PROT_READ|
write(1, "-- drizzledump 2010.09.1802 libd"..., 68-- drizzledump 2010.09.1802 libdrizzle 7, for pc-linux-gnu (x86_64)
) = 68
write(1, "--\n", 3--
) = 3
write(1, "-- Host: localhost Database: "..., 50-- Host: localhost Database: moocowproductions
) = 50
write(1, "-- -------
) = 58
write(1, "-- Server version\
) = 52
write(1, "\n", 1
) = 1
sendto(3, "\22\0\
recvfrom(3, "\7\0\0\
sendto(3, "\225\0\0\0\3SELECT TABLE_NAME, TABLE_CO"..., 153, 0, NULL, 0) = 153
recvfrom(3, 0x1b316e0, 32768, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "\1\0\0\
brk(0x1b75000) = 0x1b75000
sendto(3, "\6\1\0\0\3SELECT COLUMN_NAME, COLUMN_"..., 266, 0, NULL, 0) = 266
recvfrom(3, 0x1b316e0, 32768, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "\1\0\0\
brk(0x1ba4000) = 0x1ba4000
sendto(3, "\26\0\0\0\3SHOW INDEXES FROM Art", 26, 0, NULL, 0) = 26
recvfrom(3, 0x1b316e0, 32768, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "\1\0\0\
brk(0x1bc6000) = 0x1bc6000
brk(0x1bb6000) = 0x1bb6000
sendto(3, "\21\1\0\0\3SELECT COLUMN_NAME, COLUMN_"..., 277, 0, NULL, 0) = 277
recvfrom(3, 0x1b316e0, 32768, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "\1\0\0\
sendto(3, "!\0\0\0\3SHOW INDEXES FROM BlogCateg"..., 37, 0, NULL, 0) = 37
recvfrom(3, "\1\0\0\
sendto(3, "\17\1\0\0\3SELECT COLUMN_NAME, COLUMN_"..., 275, 0, NULL, 0) = 275
recvfrom(3, 0x1b316e0, 32768, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "\1\0\0\
sendto(3, "\37\0\0\0\3SHOW INDEXES FROM BlogComme"..., 35, 0, NULL, 0) = 35
recvfrom(3, 0x1b316e0, 32768, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "\1\0\0\
sendto(3, "\f\1\0\0\3SELECT COLUMN_NAME, COLUMN_"..., 272, 0, NULL, 0) = 272
recvfrom(3, 0x1b316e0, 32768, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "\1\0\0\
sendto(3, "\34\0\0\0\3SHOW INDEXES FROM BlogMoods", 32, 0, NULL, 0) = 32
recvfrom(3, 0x1b316e0, 32768, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "\1\0\0\
sendto(3, "\f\1\0\0\3SELECT COLUMN_NAME, COLUMN_"..., 272, 0, NULL, 0) = 272
recvfrom(3, 0x1b316e0, 32768, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "\1\0\0\
sendto(3, "\34\0\0\0\3SHOW INDEXES FROM BlogPosts", 32, 0, NULL, 0) = 32
recvfrom(3, 0x1b316e0, 32768, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "\1\0\0\
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Segmentation fault
I suspect it may have something to do with stored procedures and triggers and being in my SQL schema. I was hoping drizzledump would just filter them out. I will do more testing to see what may be going on once I have more time, but thought I would send this along.
Related branches
- Drizzle Merge Team: Pending requested
-
Diff: 11 lines (+1/-1)1 file modifiedclient/drizzledump_mysql.cc (+1/-1)
Changed in drizzle: | |
assignee: | nobody → Andrew Hutchings (linuxjedi) |
Changed in drizzle: | |
status: | Fix Committed → Fix Released |
It is very likely to be some kind of case where it thinks something exists that doesn't. Although it should not be attempting to look at triggers or stored procs.
Is it possible you could run:
shell> gdb --args drizzledump -p3306 -uroot -P<omitted>
Then in the gdb console:
gdb> run
And when it segfaults:
gdb> bt
This should give a stack of where it failed. I suspect it is an unhandled error condition (but I'm kinda hoping its not). Most likely trying to find out about whatever table comes after BlogPosts.