Archived

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

assert !_changes.empty() on a high load

During heavy load of our services that use Ice time to time crashes occur with following bt:

#4 0xb796afbf in __assert_fail () from /lib/tls/i686/cmov/libc.so.6
#5 0xb7f159c7 in IceInternal::ThreadPool::run (this=0x8ac3528) at ThreadPool.cpp:419
#6 0xb7f17076 in IceInternal::ThreadPool::EventHandlerThread::run (this=0x8ac2fd0) at ThreadPool.cpp:878
#7 0xb7ce05bb in startHook (arg=0x8ac2fd0) at Thread.cpp:357
#8 0xb793c240 in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#9 0xb7a144ae in clone () from /lib/tls/i686/cmov/libc.so.6
(gdb) f 5
#5 0xb7f159c7 in IceInternal::ThreadPool::run (this=0x8ac3528) at ThreadPool.cpp:419
419 assert(!_changes.empty());

so it's supposed that _changes must not be empty, however it happens time to time. Could you suggest something to resolve an issue?

Comments

  • benoit
    benoit Rennes, France
    Hi,

    This assert should definitely not be triggered. I can't see any reasons in the code that could cause it to be triggered. Are you doing anything special in your program (such a forking other processes)? If you fork processes in an Ice server, you should make sure to close all the file descriptors in the child, see this FAQ for more information.

    Also, which Ice and Linux version do you use? From the line numbers in the stack trace, it looks like you're not using the latest version, any chances you could try with 3.2.1? If possible, the best would be to provide us a small test case that we could use to duplicate the problem.

    Cheers,
    Benoit.