Boost: what could be the reasons for a crash in boost::slot::~slot?

I found the problem. When I enable these preprocessor definitions (my Xcode does that by default in Debug configuration), it crashes: D _GLIBCXX_DEBUG=1 -D _GLIBCXX_DEBUG_PEDANTIC=1 I guess Boost (bjam) compiled without those and that causes such problems because the STL structures (like vector) look different in binary form when compiled with or without this.

I found the problem. When I enable these preprocessor definitions (my Xcode does that by default in Debug configuration), it crashes: -D _GLIBCXX_DEBUG=1 -D _GLIBCXX_DEBUG_PEDANTIC=1 I guess Boost (bjam) compiled without those and that causes such problems because the STL structures (like vector) look different in binary form when compiled with or without this.

It sounds like your GConsole class is not derived from boost::trackable. When a signal is bound to a member function, it expects the member's object to exist, always. You can either explicitly disconnect signals when member function's owner is destroyed, or you can derive the object from boost::trackable, which will do the maintenance automatically when the object is destroyed.

But GConsole exists at that point. That GConsole::init() function is called after the construction of GConsole. Also, it is right at the beginning, so the crash occurs at connecting the slot, not at disconnecting.

– Albert Dec 1 '09 at 13:28 Another question maybe: Why is ~slot_base() called at all here, when I do a slot. Connect? – Albert Dec 1 '09 at 13:33.

Slot_type is boost::slot. For a signal boost::signal, slot_function_type is the type-erased function object class boost::functionN, equivalent to std::function, so it can hold any object supporting the signal's call signature (e.g. Function pointers, callable objects, boost::bind, etc.). Slot_type contains and has an implicit constructor from slot_function_type, but it also contains the machinery for automatic connection management through boost::trackable (see Automatic connection management (Intermediate) in the tutorial).

You want to use slot_type unless you have some specific reason to use slot_function_type, as this will ensure that if you ever need to use automatic connection management it will just work. Slot_type has a templated implicit constructor, so it's OK to use anywhere slot_function_type would work for passing to boost::signal::connect().

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions