Archived

This forum has been archived. Please start a new discussion on GitHub.

Registry Crash

Well, I'm afraid my crash from earlier now happens anytime I try to make an update.

If I login to the registry via icegridadmin, open the application, and make any change whatsoever, as soon as I "Save" the registry crashes. here's a backtrace:

#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb75c5259 in *__GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#2 0xb75c6751 in *__GI_abort () at abort.c:88
#3 0xb75f93ac in __libc_message (do_abort=2, fmt=0xb76a5600 "*** glibc detected *** %s: %s: 0x%s ***\n")
at ../sysdeps/unix/sysv/linux/libc_fatal.c:170
#4 0xb75fe95b in malloc_printerr (action=2, str=0xb76a24a2 "free(): invalid pointer",
ptr=<value optimized out>) at malloc.c:5758
#5 0xb75ffed1 in *__GI___libc_free (mem=0x82bbdec) at malloc.c:3541
#6 0xb7798929 in operator delete (ptr=0x0)
at /var/tmp/portage/sys-devel/gcc-4.1.1-r3/work/gcc-4.1.1/libstdc++-v3/libsupc++/del_op.cc:49
#7 0xb777698f in std::string::_Rep::_M_destroy (this=0x82bbdec, __a=@0xb61fcca9)
at /var/tmp/portage/sys-devel/gcc-4.1.1-r3/work/build/i686-pc-linux-gnu/libstdc++-v3/include/ext/new_allocator.h:96
#8 0x08123dd1 in ~Identity (this=0x82bbe08)
at /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4/bits/basic_string.h:233
#9 0x08147e59 in IceGrid::Cache<Ice::Identity, IceGrid::ObjectEntry>::removeImpl (this=0x82bbda0,
key=@0x82c6530) at /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4/bits/stl_pair.h:69
#10 0x08160bdd in IceGrid::ObjectCache::remove (this=0x82bbda0, id=@0x82c6530) at ObjectCache.cpp:119
#11 0x0816af26 in IceGrid::ServerCache::removeCommunicator (this=0x82bbed0, comm=@0xb61fcfbc,
entry=@0xb61fcfa8) at ServerCache.cpp:194
#12 0x08174a16 in IceGrid::ForEachCommunicator<IceGrid::RemoveCommunicator>::operator() (
this=0xb61fcfa0, descriptor=@0xb61fcfbc) at ServerCache.cpp:55
#13 0x08170cbb in IceGrid::ServerCache::remove (this=0x82bbed0, id=@0x82f5368, destroy=false)
at ServerCache.cpp:131
#14 0x08131ae4 in IceGrid::Database::reload (this=0x82bbbc0, oldApp=@0xb61fd314, newApp=@0xb61fd1c0,
entries=@0xb61fdab8, uuid=@0xb61fd9fc, revision=54) at Database.cpp:1363
#15 0x08135568 in IceGrid::Database::syncApplicationDescriptor (this=0x82bbbc0, newDesc=@0xb61fdb40,
session=0x82d1268) at Database.cpp:416
#16 0x08197088 in IceGrid::AdminI::syncApplication (this=0x82c5fa0, descriptor=@0xb61fdb40)
at AdminI.cpp:171
#17 0xb7e4742c in IceGrid::Admin::___syncApplication (this=0x82c5fa0, __inS=@0xb61fdd0c,
__current=@0xb61fdd0c) at Admin.cpp:8972
#18 0xb7e4ba48 in IceGrid::Admin::__dispatch (this=0x82c5fa0, in=@0xb61fdd0c, current=@0xb61fdd0c)
at Admin.cpp:10220
#19 0xb78d6b39 in IceInternal::Incoming::invoke (this=0xb61fdd0c, servantManager=@0xb61fdecc)
at Incoming.cpp:421
#20 0xb78aea74 in Ice::ConnectionI::invokeAll (this=0x82d18c8, stream=@0xb61fe148, invokeNum=1,
requestId=10, compress=0 '\0', servantManager=@0xb61fdecc, adapter=@0xb61fdec8)
at ConnectionI.cpp:2430
#21 0xb78af37c in Ice::ConnectionI::message (this=0x82d18c8, stream=@0xb61fe148, threadPool=@0xb61fe258)
at ConnectionI.cpp:1437
#22 0xb799bbe2 in IceInternal::ThreadPool::run (this=0x82b9158) at ThreadPool.cpp:843
#23 0xb799d5ad in IceInternal::ThreadPool::EventHandlerThread::run (this=0x82d1df8)
at ThreadPool.cpp:1066
#24 0xb7803643 in startHook (arg=0x82d1df8) at Thread.cpp:357
#25 0xb77cb2c1 in start_thread (arg=0xb61feb90) at pthread_create.c:296
#26 0xb765617e in clone () from /lib/libc.so.6

Comments

  • If it's of any help, I also did a little poking with gdb:
    (gdb) down
    #10 0x08160bdd in IceGrid::ObjectCache::remove (this=0x82bc1c0, id=@0x82c60f8) at ObjectCache.cpp:119
    119     ObjectCache.cpp: No such file or directory.
            in ObjectCache.cpp
    (gdb) p id
    $1 = (const Ice::Identity &) @0x82c60f8: {name = {static npos = 4294967295,
        _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x82c5dc4 "FuelPump_Blue"}}, category = {static npos = 4294967295,
        _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x82c5da4 "MotorControl"}}}
    (gdb) down
    #9  0x08147e59 in IceGrid::Cache<Ice::Identity, IceGrid::ObjectEntry>::removeImpl (this=0x82bc1c0,
        key=@0x82c60f8) at /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4/bits/stl_pair.h:69
    69          {
    (gdb) p key
    $2 = (const Ice::Identity &) @0x82c60f8: {name = {static npos = 4294967295,
        _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x82c5dc4 "FuelPump_Blue"}}, category = {static npos = 4294967295,
        _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x82c5da4 "MotorControl"}}}
    (gdb) down
    #8  0x08123dd1 in ~Identity (this=0x82bc228)
        at /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4/bits/basic_string.h:233
    233                   _M_destroy(__a);
    (gdb) p this
    $3 = (Ice::Identity * const) 0x82bc228
    

    Note that this debug session was different than my earlier backtrace, so the addresses won't be the same between the two.
  • benoit
    benoit Rennes, France
    Hmm, I don't know why it's crashing when it's trying to destroy the string from the Ice::Identity. It sounds like a memory corruption issue. Could you by any chance send me your registry database by email at benoit@zeroc.com? You just need to tar and compress the content of the directory specified with the IceGrid.Registry.Data property. I should be able to reproduce the issue with your database if this now occurs for each update.

    Btw, which Linux distribution are you using and are you using Ice 3.2?

    Cheers,
    Benoit.