[Gluster-devel] epoll.c bug
Anand Avati
avati at zresearch.com
Mon Dec 10 22:30:23 UTC 2007
Thierry,
thanks for the gdb traces. this looks like the epoll() call in your system
(ARM processor platform) is broken. the epoll in your case has returned 3
but the 2'nd and 3'rd entries are junk. can you also get me the output of "p
*ectx" from frame 2 ?
you might want to use poll which I feel might be more reliable. currently
the only way to 'force' poll is to move away sys/epoll.h during ./configure
(sorry, will add a --disable-epoll soon :D) and recompile.
avati
> Program terminated with signal 11, Segmentation fault.
> #0 0x00000000 in ?? ()
> (gdb) where
> #0 0x00000000 in ?? ()
> #1 0x400368a4 in transport_notify (this=0x1b3d8, event=16) at transport.c
> :154
> #2 0x40037570 in epoll_notify (eevent=462576, data=0x1b3d8) at epoll.c:54
> #3 0x40037b0c in sys_epoll_iteration (ctx=0xbed6d9c8) at epoll.c:182
> #4 0x40036d9c in poll_iteration (ctx=0xbed6d9c8) at transport.c:302
> #5 0x00009c08 in main ()
> (gdb) up
> #1 0x400368a4 in transport_notify (this=0x1b3d8, event=16) at transport.c
> :154
> 154 return this->notify (this->xl, ev, this);
> (gdb) p *this
> $2 = {ops = 0x1b6f0, private = 0x0, xl_private = 0x0, lock = {__data = {
> __lock = 0, __count = 0, __owner = 33, __kind = 0, __nusers = 12,
> __spins = 0},
> __size =
> "\000\000\000\000\000\000\000\000!\000\000\000\000\000\000\000\f\000\000\000\000\000\000",
> __align = 0},
> refcount = 111408, xl = 0x1,
> dnscache = 0x0, buf = 0x0, init = 0x59, peerinfo = {sockaddr = {
> sin_family = 9808, sin_port = 17567, sin_addr = {s_addr = 114040},
> sin_zero = "\000\000\000\000\000\000\000"}}, fini = 0, notify = 0}
> (gdb) up
> #2 0x40037570 in epoll_notify (eevent=462576, data=0x1b3d8) at epoll.c:54
> 54 ret = transport_notify (trans, event);
> (gdb) up
> #3 0x40037b0c in sys_epoll_iteration (ctx=0xbed6d9c8) at epoll.c:182
> 182 epoll_notify (ectx->evs[i].events,
> (gdb) p *ctx
> $1 = {pool = 0x13008, fin = 0 '\0', foreground = 0 '\0',
> logfile = 0xa15c
> "/mnt/disk1/share/YYY/var/log/glusterfs/glusterfsd.log",
> loglevel = 3, poll_type = SYS_POLL_TYPE_EPOLL, poll_ctx = 0x197b8,
> timer = 0x13058, graph = 0x0, ib = 0x0, node_name = 0x0, lock = {__data
> = {
> __lock = 0, __count = 0, __owner = 0, __kind = 0, __nusers = 0,
> __spins = 0}, __size = '\0' <repeats 23 times>, __align = 0}}
> (gdb) p *ectx
> $6 = {epollfd = 5, fds = 4, evs = 0x53da8, ev_count = 4, lock = {__data =
> {
> __lock = 0, __count = 0, __owner = 0, __kind = 0, __nusers = 0,
> __spins = 0}, __size = '\0' <repeats 23 times>, __align = 0}, cond =
> {
> __data = {__lock = 0, __futex = 0, __total_seq = 0, __wakeup_seq = 0,
> __woken_seq = 0, __mutex = 0x0, __nwaiters = 0, __broadcast_seq =
> 0},
> __size = '\0' <repeats 47 times>, __align = 0}}
> (gdb) p i
> $7 = 2
> (gdb) p ret
> $9 = 3
> (gdb) p ectx->evs[0]
> $10 = {events = 1, data = {ptr = 0x53820, fd = 342048, u32 = 342048,
> u64 = 4295309344}}
> (gdb) p ectx->evs[1]
> $11 = {events = 0, data = {ptr = 0x11, fd = 17, u32 = 17, u64 = 17}}
> (gdb) p ectx->evs[2]
> $12 = {events = 462576, data = {ptr = 0x1b3d8, fd = 111576, u32 = 111576,
> u64 = 475813657031640}}
>
> ====================================================================
>
> # The server configuration (brick-afr is not used)
> volume brick1
> type storage/posix
> option directory /mnt/disk1/gluster
> end-volume
> volume brick2
> type features/posix-locks
> subvolumes brick1
> end-volume
> volume brickafr
> type storage/posix
> option directory /mnt/disk1/glusterafr
> end-volume
> volume brick
> type performance/io-threads
> option thread-count 8
> option cache-size 8MB
> subvolumes brick2
> end-volume
> volume server
> type protocol/server
> subvolumes brick brickafr
> option transport-type tcp/server # For TCP/IP transport
> option auth.ip.brick.allow 192.168.*
> end-volume
>
> ====================================================================
>
> About the installation, the 'make install' doesn't use
> the configuration --prefix argument to issue the following line :
>
> /usr/bin/install -c 'mount.glusterfs' '/sbin/mount.glusterfs'
>
> ====================================================================
>
> Thanks again for your work.
>
> Thierry Excoffier.
> --
> Thierry.EXCOFFIER@@liris.univ-lyon1.fr// GO: Oriental Strategy Game
> LIRIS/UFR Informatique, bat710 //DYLAN: Programming Language
> Universite Claude Bernard LYON 1 __// UNIX: Standard Operating System
> 43 Bd du 11 novembre 1918 //
> 69622 VILLEURBANNE, FRANCE //WWW: http://www710.univ-lyon1.fr/~exco
>
>
> _______________________________________________
> Gluster-devel mailing list
> Gluster-devel at nongnu.org
> http://lists.nongnu.org/mailman/listinfo/gluster-devel
>
--
It always takes longer than you expect, even when you take into account
Hofstadter's Law.
-- Hofstadter's Law
More information about the Gluster-devel
mailing list