gluster-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gluster-devel] epoll.c bug


From: Thierry EXCOFFIER
Subject: Re: [Gluster-devel] epoll.c bug
Date: Mon, 10 Dec 2007 23:00:11 +0100
User-agent: Thunderbird 1.5.0.14pre (X11/20071023)

Anand Avati wrote:
>  do you still face the issue with the latest TLA? there have been some
> changes in the epoll/poll fallback code recently.

I didn't succeed to compile the TLA sources files (autoconf problems)

So I used your link :
        http://gnu.zresearch.com/~avati/glusterfs-1.3.8tla604.tar.gz

It does not work even with only one client.
It dies after 2 seconds of 'ls -R' (always a NULL pointer
in the epoll system). My previous patch does not work
for this bug.

In order to have more information, I recompiled with
option '-O0' in order to see all variables in 'gdb'.

With this option, 'glusterfsd' does NOT die with one client.

It did with 2 clients :

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]