View Issue Details

IDProjectCategoryView StatusLast Update
0001355Anope Development (1.9.x series)Chanservpublic2011-11-04 01:01
ReporterRobby Assigned ToAdam  
PrioritynormalSeveritycrashReproducibilityalways
Status resolvedResolutionfixed 
PlatformLinux, i686OSFedora 
Summary0001355: [anope-1.9-302989b] Crash when removing multiple logging options fast
DescriptionWhen you add some log entries (as shown below) and want to remove them fast, it crashes services. I actually hit this bug when doing this manually (but not so slowly either) and when reproducing it not always crashed services. But now I did find a way that works everytime: just paste the below commands so that they get executed instantly after eachother.
Steps To ReproduceDo all these commands quickly (paste them):
/CS LOG #Test chanserv/deop MEMO
/CS LOG #Test chanserv/op MEMO
/CS LOG #Test chanserv/mode MEMO
/CS LOG #Test chanserv/mode MEMO
/CS LOG #Test chanserv/deop MEMO
/CS LOG #Test chanserv/op MEMO
Additional InformationOn a side note, while triggering this crash, it now seems that it spits some backtrace output in the console. Weird, because I start services this way: ./services and I've never seen this happening before. Perhaps this is related to the recent changes to forking?
TagsNo tags attached.

Activities

Adam

2011-11-04 01:01

administrator   ~0006003

Fixed in 09dba47653f83d62dd3877b4cbac7af3bd16f341

Robby

2011-11-02 20:12

manager  

bt-cslog.txt (8,546 bytes)   
[Nov 02 19:05:53.791926 2011] Debug: Received: :6FSAAAAJN PRIVMSG 7XHAAAAAA :LOG #Test
[Nov 02 19:05:53.792809 2011] Debug: Sent: :7XHAAAAAA NOTICE Robby :Log list for #Test:
[Nov 02 19:05:53.793364 2011] Debug: Sent: :7XHAAAAAA NOTICE Robby :1: ChanServ mode, MEMO
[Nov 02 19:05:53.793811 2011] Debug: Sent: :7XHAAAAAA NOTICE Robby :2: ChanServ deop, MEMO
[Nov 02 19:05:53.794155 2011] Debug: Sent: :7XHAAAAAA NOTICE Robby :3: ChanServ op, MEMO
[Nov 02 19:06:03.777717 2011] Debug: Received: :6FSAAAAJN PRIVMSG 7XHAAAAAA :LOG #Test chanserv/mode MEMO
[Nov 02 19:06:03.778771 2011] Debug: Sent: :7XHAAAAAA NOTICE Robby :Logging for command mode on ChanServ with method MEMO has been removed.
[Nov 02 19:06:06.206581 2011] Debug: Received: :6FSAAAAJN PRIVMSG 7XHAAAAAA :LOG #Test chanserv/deop MEMO
[Nov 02 19:06:06.207470 2011] Debug: Sent: :7XHAAAAAA NOTICE Robby :Logging for command deop on ChanServ with method MEMO has been removed.

Program received signal SIGSEGV, Segmentation fault.
0x00b0fd59 in __gnu_cxx::__exchange_and_add () from /usr/lib/libstdc++.so.6
Missing separate debuginfos, use: debuginfo-install e2fsprogs-libs-1.41.4-6.fc10.i386 glibc-2.9-3.i686 keyutils-libs-1.2-3.fc9.i386 krb5-libs-1.6.3-18.fc10.i386 libgcc-4.3.2-7.i386 libselinux-2.0.78-1.fc10.i386 libstdc++-4.3.2-7.i386 openssl-0.9.8g-14.fc10.i686 sqlite-3.5.9-4.fc10.i386 zlib-1.2.3-18.fc9.i386
(gdb) bt full
#0  0x00b0fd59 in __gnu_cxx::__exchange_and_add () from /usr/lib/libstdc++.so.6
No symbol table info available.
#1  0x00af2bfe in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string () from /usr/lib/libstdc++.so.6
No symbol table info available.
#2  0x080ef981 in ~string (this=0x8429e48) at /home/ircd/networks/testnet/inspircd/anope-1.9-302989b/include/anope.h:32
No locals.
#3  0x080f01da in std::_Destroy<Anope::string> (__pointer=0x8429e48)
    at /usr/lib/gcc/i386-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_construct.h:88
No locals.
#4  0x080f01ef in std::_Destroy<Anope::string*> (__first=0x8429e48, __last=0x8429e50)
    at /usr/lib/gcc/i386-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_construct.h:103
No locals.
#5  0x080f0215 in std::_Destroy<Anope::string*, Anope::string> (__first=0x8429e48, __last=0x8429e50)
    at /usr/lib/gcc/i386-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_construct.h:128
No locals.
#6  0x080f1dd4 in ~vector (this=0xbffed930) at /usr/lib/gcc/i386-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_vector.h:300
No locals.
#7  0x081ffce4 in process (buffer=@0xbfffdf64) at /home/ircd/networks/testnet/inspircd/anope-1.9-302989b/src/process.cpp:91
        buf = {_string = {static npos = 4294967295,
    _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
      _M_p = 0x8447b4c "PRIVMSG 7XHAAAAAA :LOG #Test chanserv/deop MEMO"}}, static npos = 4294967295}
        source = {_string = {static npos = 4294967295,
    _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
      _M_p = 0x8442bdc "6FSAAAAJN"}}, static npos = 4294967295}
        buf_sep = {<sepstream> = {_vptr.sepstream = 0x825a898, tokens = {_string = {static npos = 4294967295,
        _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
          _M_p = 0x84473d4 "PRIVMSG 7XHAAAAAA :LOG #Test chanserv/deop MEMO"}}, static npos = 4294967295}, last_starting_position = {
      _M_current = 0x84473eb "#Test chanserv/deop MEMO"}, n = {_M_current = 0x84473eb "#Test chanserv/deop MEMO"},
    sep = 32 ' '}, <No data fields>}
        buf_token = {_string = {static npos = 4294967295,
    _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
      _M_p = 0x842b7fc ":LOG"}}, static npos = 4294967295}
        command = {_string = {static npos = 4294967295,
    _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
      _M_p = 0x84482e4 "PRIVMSG"}}, static npos = 4294967295}
        params = {<std::_Vector_base<Anope::string, std::allocator<Anope::string> >> = {
    _M_impl = {<std::allocator<Anope::string>> = {<__gnu_cxx::new_allocator<Anope::string>> = {<No data fields>}, <No data fields>},
      _M_start = 0x8429e48, _M_finish = 0x8429e50, _M_end_of_storage = 0x8429e50}}, <No data fields>}
        messages = {<std::_Vector_base<Message*, std::allocator<Message*> >> = {
    _M_impl = {<std::allocator<Message*>> = {<__gnu_cxx::new_allocator<Message*>> = {<No data fields>}, <No data fields>},
      _M_start = 0x8448618, _M_finish = 0x844861c, _M_end_of_storage = 0x844861c}}, <No data fields>}
#8  0x081a7235 in UplinkSocket::Read (this=0x8431088, buf=@0xbfffdf64)
    at /home/ircd/networks/testnet/inspircd/anope-1.9-302989b/src/main.cpp:165
No locals.
#9  0x082324eb in BufferedSocket::ProcessRead (this=0x84310a8)
    at /home/ircd/networks/testnet/inspircd/anope-1.9-302989b/src/socket_transport.cpp:57
        tbuffer = ":6FSAAAAJN PRIVMSG 7XHAAAAAA :LOG #Test chanserv/deop MEMO\n\000vices, ourTS: 1158019228, TS: 1320257127, difference: 4132729397\n:6FS PRIVMSG #Server :\002DEBUG\002: NOT Applying modes from other side\n:6FS PRIV"...
        len = 59
        sbuffer = {_string = {static npos = 4294967295,
    _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
      _M_p = 0x8444f94 ":6FSAAAAJN PRIVMSG 7XHAAAAAA :LOG #Test chanserv/deop MEMO\n"}}, static npos = 4294967295}
        lastnewline = 58
---Type <return> to continue, or q <return> to quit---
        stream = {_vptr.sepstream = 0x8261a88, tokens = {_string = {static npos = 4294967295,
      _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
        _M_p = 0x84485b4 ":6FSAAAAJN PRIVMSG 7XHAAAAAA :LOG #Test chanserv/deop MEMO\n"}}, static npos = 4294967295},
  last_starting_position = {_M_current = 0x84485ef ""}, n = {_M_current = 0x84485ef ""}, sep = 10 '\n'}
        tbuf = {_string = {static npos = 4294967295,
    _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
      _M_p = 0x844835c ":6FSAAAAJN PRIVMSG 7XHAAAAAA :LOG #Test chanserv/deop MEMO"}}, static npos = 4294967295}
#10 0x0823846e in SocketEngine::Process ()
    at /home/ircd/networks/testnet/inspircd/anope-1.9-302989b/src/socketengines/socketengine_epoll.cpp:138
        ev = (epoll_event *) 0x83217b0
        it = {_M_node = 0x842f6c0}
        s = (class Socket *) 0x84310b8
        i = 0
        total = 1
#11 0x081aa1b1 in main (ac=2, av=0xbffff7f4, envp=0xbffff800) at /home/ircd/networks/testnet/inspircd/anope-1.9-302989b/src/main.cpp:358
        cwd = "/home/ircd/networks/testnet/inspircd/anope-1.9-302989b-install/bin", '\0' <repeats 4029 times>
        n = 62
        last_check = 1320257163
        updateTimer = {<Timer> = {<Extensible> = {<Base> = {_vptr.Base = 0x8265780, References = {_M_t = {
            _M_impl = {<std::allocator<std::_Rb_tree_node<dynamic_reference_base*> >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<dynamic_reference_base*> >> = {<No data fields>}, <No data fields>},
              _M_key_compare = {<std::binary_function<dynamic_reference_base*, dynamic_reference_base*, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0xbffff140, _M_right = 0xbffff140}, _M_node_count = 0}}}},
      extension_items = {<std::map<Anope::string, ExtensibleItem*, std::less<Anope::string>, std::allocator<std::pair<const Anope::string, ExtensibleItem*> > >> = {_M_t = {
            _M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const Anope::string, ExtensibleItem*> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const Anope::string, ExtensibleItem*> > >> = {<No data fields>}, <No data fields>},
              _M_key_compare = {<std::binary_function<Anope::string, Anope::string, bool>> = {<No data fields>}, <No data fields>},
              _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0xbffff158, _M_right = 0xbffff158},
              _M_node_count = 0}}}, <No data fields>}}, settime = 1320257127, trigger = 1320258027, secs = 900,
    repeat = true}, <No data fields>}
(gdb)
bt-cslog.txt (8,546 bytes)   

Issue History

Date Modified Username Field Change
2011-11-02 17:55 Robby New Issue
2011-11-02 20:12 Robby File Added: bt-cslog.txt
2011-11-04 01:01 Adam Note Added: 0006003
2011-11-04 01:01 Adam Status new => resolved
2011-11-04 01:01 Adam Resolution open => fixed
2011-11-04 01:01 Adam Assigned To => Adam