On Mon, 2004-07-26 at 05:40, Florent wrote:
I've just find the -O0. so I compiled like this : export CXXFLAGS="-g -O0" make clean ./configure --disable-mmx make Is it the correct way ?
That is fine.
Now here is the gdb message: Program received signal SIGSEGV, Segmentation fault. 0x080edfb8 in std::list<sigc::slot_base, std::allocatorsigc::slot_base
::empty() const (this=0x8) at stl_list.h:628
628 empty() const { return _M_node->_M_next == _M_node; }
So, this is different without optimizaiton...
Most of these are inline functions, so any information about them is normally stripped away by the optimizer.
(In general the optimizer may rearrange the code in ways that do not correspond to the source code.)
And the backtrace : (gdb) backtrace #0 0x080ede58 in std::list<sigc::slot_base, std::allocatorsigc::slot_base >::empty() const (this=0x8) at stl_list.h:628 #1 0x080edcb6 in sigc::internal::signal_emit1<void, SPObject*, sigc::nil>::emit(sigc::internal::signal_impl*, SPObject* const&) (impl=0x0, _A_a1=@...469...) at signal.h:616
It would seem that sigc++ is dereferencing a NULL pointer. To the best of my knowledge, emitting an unconnected signal (having a NULL impl) should be harmless (sigc++ should check the pointer).
This sounds like a sigc++ bug.
and libsigc-2.0 : 2.0.2
Try upgrading to 2.0.3, which is the version I have.
-mental