[En-Nut-Discussion] Optimizing nutconf

"Jörg Hermann" jhermann at gmx.net
Mon Jan 12 11:48:11 CET 2009


Hi all,
I just investigate the same issue, and after some debugging found 
the root cause for the seg fault.
On closing the 'open file' dialog, the destructor tries to find the 
top level parent window of the dialog and wants to invoke an
operation on that object. For some reason I don't quite understand, 
it assumes the splash screen to be the top level parent. Unfortunately
this window has been destructed in the meantime, which leads to
the seg fault.
This is the workaround, I have introduced, let me know if this works
for you as well.
best regards, 
Joerg

diff -b -U3 -r1.18 nutconf.cpp
--- tools/nutconf/nutconf.cpp    18 Sep 2008 09:53:22 -0000    1.18
+++ tools/nutconf/nutconf.cpp    16 Dec 2008 11:26:15 -0000
@@ -166,11 +166,20 @@
      * Splash display.
      */
     wxBitmap bmp(wxBITMAP(SSB_NUTCONF));
-    wxSplashScreen* splash = new wxSplashScreen(bmp, 
wxSPLASH_CENTRE_ON_SCREEN, 0, NULL, -1);
-    for (int i = 0; i < 5; i++) {
+    wxSplashScreen* splash = new wxSplashScreen(bmp,
+          wxSPLASH_CENTRE_ON_SCREEN,
+          0, NULL, -1, wxDefaultPosition, wxDefaultSize,
+          wxSIMPLE_BORDER|wxSTAY_ON_TOP);
+//     wxSplashScreen* splash = new wxSplashScreen(bmp,
+//           wxSPLASH_CENTRE_ON_SCREEN|wxSPLASH_TIMEOUT,
+//           6000, NULL, -1, wxDefaultPosition, wxDefaultSize,
+//           wxSIMPLE_BORDER|wxSTAY_ON_TOP);
         wxYield();
-        wxMilliSleep(100);
-    }
+
+//     for (int i = 0; i < 5; i++) {
+//         wxYield();
+//         wxMilliSleep(100);
+//     }
 
     wxImage::AddHandler(new wxGIFHandler);
     wxImage::AddHandler(new wxPNGHandler);
@@ -213,10 +222,6 @@
     SetTopWindow(m_mainFrame);
     m_mainFrame->Show();
 
-    if(splash) {
-        splash->Destroy();
-    }
-
     if 
(!m_mainFrame->GetHelpController().Initialize(wxT("nutoshelp"))) {
         wxLogMessage(wxT("Failed to load help file"));
     }
@@ -254,6 +259,10 @@
      */
     m_docManager->CreateDocument(m_settings->m_configname, 0);
 
+    if(splash) {
+        splash->Destroy();
+    }
+
     return true;
 }
 

>             
> -------- Original-Nachricht --------
> Datum: Mon, 12 Jan 2009 02:04:50 +0100
> Von: Ole Reinhardt <ole.reinhardt at embedded-it.de>
> An: "Ethernut User Chat (English)" <en-nut-discussion at egnite.de>
> Betreff: Re: [En-Nut-Discussion] Optimizing nutconf
> 
>             Hi,
> 
> > > I just build the HEAD version of NutConf on my Ubuntu 8.10 machine 
> and
> > > tried to reproduce your problems. Unfortunately I ended up in a
> > > segmentation fault just after selecting a configuration file. So it 
> does
> > > not work at all for me.
> > 
> > Ole, are you running KDE4? There seems to be a problem with this KDE
> > version and the wxWidget file open dialog. Last time I googled for 
> that,
> > only very few reports about this issue appeared and no solution...
> 
> No, I use Gnome 2.24. I did not track down the problem yet, but I'll do
> the next days. GDB will help me, I'm shure :)
> 
> > IMHO it is not allowed to have both, a pure-specifier and the
> > definition. Although, the MS compiler accepted that statement. Do we
> > need the  declaration of the destructor at all?
> > 
> > I should add, that my knowledge about C++ is not sufficient to
> > understand all the details. After removing the destructor, it seems to
> > work, but I'm not sure whether this may break something else.
> 
> Hmm... me I'm not a C++ guru either... so perhaps Thiago has an idea
> himself?
> 
> Regards,
> 
> Ole
> 
> -- 
>  _____________________________________________________________
> |                                                             |
> | Embedded-IT          Hard- und Softwarelösungen             |
> |                                                             |
> | Ole Reinhardt        Tel. / Fax:        +49 (0)271  7420433 |
> | Luisenstraße 29      Mobil:             +49 (0)177  7420433 |
> | 57076 Siegen         eMail:    ole.reinhardt at embedded-it.de |
> | Germany              Web:         http://www.embedded-it.de |
> |                      UstID / VAT:       DE198944716         |
> |_____________________________________________________________|
> 
> _______________________________________________
> http://lists.egnite.de/mailman/listinfo/en-nut-discussion
> 
        
-- 
Sensationsangebot verlängert: GMX FreeDSL - Telefonanschluss + DSL 
für nur 16,37 Euro/mtl.!* http://dsl.gmx.de/?ac=OM.AD.PD003K1308T4569a


More information about the En-Nut-Discussion mailing list