Re: [Inkscape-user] Re: Crash on startup
Sorry for taking so long to get back to you; emails about compilation problems will probably get answered quicker on the development mailing list...
On Thu, 2004-07-22 at 16:05, Florent wrote:
But maybe, the problem come from the new libs version ? Is there anyone who can run the last CVS on a Linux ?
Yes, I've been running it since I did the library conversion.
And what is his lib versions ?
gtk+-2.0 = 2.4.3 gobject-2.0 = 2.4.2 gmodule-2.0 = 2.4.2 glib-2.0 = 2.4.2 pango = 1.4.0
gtkmm-2.4 = 2.4.4 gdkmm-2.4 = 2.4.4 glibmm-2.4 = 2.4.3 pangomm-1.4 = 2.4.4
I don't know if it can help but when I run the "ddd inkscape", it gives me :
Program received signal SIGSEGV, Segmentation fault. SPDesktop::_layer_hierarchy_changed(SPObject*, SPObject*, SPDesktop*) (top=0x84023d0, bottom=0x84023d0, desktop=0x86bc208) at stl_list.h:397 /usr/include/c++/3.2.3/bits/stl_list.h:397:10573:beg:0x815f4c4
void SPDesktop::_layer_hierarchy_changed(SPObject *top, SPObject *bottom, SPDesktop *desktop) { desktop->_layer_changed_signal.emit(bottom); }
That place for the crash looks a little strange to me. Could you try compiling without optimization and see if it yields the same backtrace (and give me some more of the actual backtrace as well..).
The only reason I can think of that it would crash here is if SPDesktop::_layer_changed_signal were not initialized properly for some reason.
-mental
Program received signal SIGSEGV, Segmentation fault. SPDesktop::_layer_hierarchy_changed(SPObject*, SPObject*, SPDesktop*) (top=0x84023d0, bottom=0x84023d0, desktop=0x86bc208) at stl_list.h:397 /usr/include/c++/3.2.3/bits/stl_list.h:397:10573:beg:0x815f4c4
void SPDesktop::_layer_hierarchy_changed(SPObject *top, SPObject *bottom, SPDesktop *desktop) { desktop->_layer_changed_signal.emit(bottom); }
That place for the crash looks a little strange to me. Could you try compiling without optimization and see if it yields the same backtrace (and give me some more of the actual backtrace as well..).
Sorry ... i'm a real beginner in C++ programming :/ how can I compile without optimization ?
On Sat, 2004-07-24 at 17:44, Florent wrote:
Sorry ... i'm a real beginner in C++ programming :/ how can I compile without optimization ?
Probably the easiest way is to rerun configure, setting the CXXFLAGS environment variable beforehand, like:
CXXFLAGS="-g" ./configure
Then run make as before.
-mental
void SPDesktop::_layer_hierarchy_changed(SPObject *top, SPObject *bottom, SPDesktop *desktop) { desktop->_layer_changed_signal.emit(bottom); }
That place for the crash looks a little strange to me. Could you try compiling without optimization and see if it yields the same backtrace (and give me some more of the actual backtrace as well..).
Sorry ... i'm a real beginner in C++ programming :/ how can I compile without optimization ?
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 ?
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...
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=@0xbffff554) at signal.h:616 #2 0x080edb0f in sigc::signal1<void, SPObject*, sigc::nil>::emit(SPObject* const&) const (this=0x86ca520, _A_a1=@0xbffff554) at signal.h:1637 #3 0x08172a87 in SPDesktop::_layer_hierarchy_changed(SPObject*, SPObject*, SPDesktop*) (top=0x8410508, bottom=0x8410508, desktop=0x86ca400) at desktop.cpp:1398 #4 0x08177347 in sigc::pointer_functor3<SPObject*, SPObject*, SPDesktop*, void>::operator()(SPObject* const&, SPObject* const&, SPDesktop* const&) const ( this=0x86caab0, _A_a1=@0xbffff660, _A_a2=@0xbffff664, _A_a3=@0x86caab4) at ptr_fun.h:185 #5 0x08177323 in operator()<SPObject* const&, SPObject* const&, SPDesktop*&> ( this=0x86caaac, _A_arg1=@0xbffff660, _A_arg2=@0xbffff664, _A_arg3=@0x86caab4) at adaptor_trait.h:126 #6 0x08177303 in operator()<SPObject* const&, SPObject* const&> ( this=0x86caaa8, _A_arg1=@0xbffff660, _A_arg2=@0xbffff664) at bind.h:1087 #7 0x081772df in sigc::internal::slot_call2<sigc::bind_functor<-1, sigc::pointer_functor3<SPObject*, SPObject*, SPDesktop*, void>, SPDesktop*, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>, void, SPObject*, SPObject*>::call_it(sigc::internal::slot_rep*, SPObject* const&, SPObject* const&) ( ---Type <return> to continue, or q <return> to quit--- rep=0x86caa90, a_1=@0xbffff660, a_2=@0xbffff664) at slot.h:158 #8 0x081617ba in sigc::internal::signal_emit2<void, SPObject*, SPObject*, sigc::nil>::emit(sigc::internal::signal_impl*, SPObject* const&, SPObject* const&) ( impl=0x86ca920, _A_a1=@0xbffff660, _A_a2=@0xbffff664) at signal.h:753 #9 0x0816148c in sigc::signal2<void, SPObject*, SPObject*, sigc::nil>::emit(SPObject* const&, SPObject* const&) const (this=0x86ca9ec, _A_a1=@0xbffff660, _A_a2=@0xbffff664) at signal.h:1741 #10 0x08198950 in Inkscape::ObjectHierarchy::setTop(SPObject*) ( this=0x86ca9d8, object=0x8410508) at object-hierarchy.cpp:62 #11 0x0816f8c8 in sp_desktop_set_document (view=0x86ca400, doc=0x84189f0) at desktop.cpp:557 #12 0x08168354 in sp_view_set_document(SPView*, SPDocument*) (view=0x86ca400, doc=0x84189f0) at view.cpp:228 #13 0x0816ec28 in sp_desktop_new (namedview=0x84125d8, canvas=0x86c0dd8) at desktop.cpp:386 #14 0x081723f9 in sp_desktop_widget_new(SPNamedView*) (namedview=0x84125d8) at desktop.cpp:1307 #15 0x080eed85 in sp_file_new() () at file.cpp:85 #16 0x080ea140 in sp_main_gui(int, char const**) (argc=1, argv=0xbffff914) at main.cpp:301 #17 0x080e9f2a in main (argc=1, argv=0xbffff914) at main.cpp:239 #18 0x40c50936 in __libc_start_main () from /lib/libc.so.6
and my libs are : gtk+-2.0 : 2.4.3 gobject-2.0 : 2.4.2 gmodule-2.0 : 2.4.2 glib-2.0 : 2.4.2 pango : 1.4.0 gtkmm-2.4 : 2.4.4 gdkmm-2.4 : 2.4.4 glibmm-2.4 : 2.4.3 pangomm-1.4 : 2.4.4 The sames like MenTaLguY...
and libsigc-2.0 : 2.0.2
compile with gcc 3.3.4 on a Slackware.
FlorentGabriel
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
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=@0xbffff554) 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.
Yes, the compilation is running !
And now I see that there's some good changes since my last compilation...really good !
On Sun, 2004-08-01 at 16:32, Florent wrote:
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.
Yes, the compilation is running !
Okay, I've altered configure.in to require 2.0.3 or later.
-mental
participants (2)
-
Florent
-
MenTaLguY