On Fri, 25 Oct 2013 07:55:19 -0400
Ajtim <lum...@gmail.com> wrote:

> On Fri, 25 Oct 2013 12:53:49 +0000
> Schaich Alonso <alonsoscha...@fastmail.fm> wrote:
> 
> > On Thu, 24 Oct 2013 19:19:21 -0400
> > Ajtim <lum...@gmail.com> wrote:
> > 
> > > Hi!
> > > 
> > > I built "marble" with clang on FreeBSD 10.0-BETA1 and when I start
> > > it it crashed:
> > > 
> > > Application: Marble Virtual Globe (marble), signal: Segmentation
> > > fault [...]
> > > 
> > > Do I need to use gcc instead, please?
> > > 
> > > Thank you.
> > > 
> > > 
> > > Mitja
> > 
> > If it's built with gcc it segfaults nevertheless. Over here I get
> > 
> > > Null pointer in call to GeoDataTreeModel::addFeature (parent
> > > 0x810288d38  - feature 0x0 ) 
> > > KCrash: Application 'marble' crashing...
> > 
> > printed on the terminal before the application crashes though. It's
> > probably the lack of some "optional" dependencies which aren't in
> > ports yet. I'll try to investigate this.
> > 
> > Alonso
> 
> I did disable option for GPS and rebuilt but it crashed again:
>  
> Do you thing that is related because I cannot build telepathy-qt4,
> please?
> 

No, it's unrelated. This crash is caused by insufficient runtime validation.
I strongly suspect it's the Bookmark Manager (from src/lib/BookmarkManager.h)
that gets corrupted at some point, or is corrupt to begin with.

This:

> Thread 5 (Thread 810006400 (LWP 101622/marble)):
> [...]
> 10 0x000000080105dc4c in Marble::BookmarkManager::updateBookmarkFile ()
>   from /usr/local/kde4/lib/libmarblewidget.so.16
> 11 0x000000080105d7a7 in Marble::BookmarkManager::loadFile ()
>   from /usr/local/kde4/lib/libmarblewidget.so.16
> 12 0x0000000000427203 in ?? ()
> [...]

With more symbols (WITH_DEBUG) on the broken frame:

#0  Marble::GeoWriter::writeElement (this=0x7fffffffc508, object=0x0)
    at
    
/usr/obj/usr/ports/astro/marble/work/marble-4.11.2/src/lib/geodata/writer/GeoWriter.cpp:62
#1  0x0000000800e801d5 in Marble::GeoWriter::write (this=0x7fffffffc508,
    device=<value optimized out>, feature=0x0) at
    
/usr/obj/usr/ports/astro/marble/work/marble-4.11.2/src/lib/geodata/writer/GeoWriter.cpp:49
#2  0x00000008010793ec in Marble::BookmarkManager::updateBookmarkFile
    (this=0x8100902f8) at
    
/usr/obj/usr/ports/astro/marble/work/marble-4.11.2/src/lib/BookmarkManager.cpp:235
#3  0x0000000801078f47 in Marble::BookmarkManager::loadFile
    (this=0x8100902f8, relativeFilePath=<value optimized out>) at
    
/usr/obj/usr/ports/astro/marble/work/marble-4.11.2/src/lib/BookmarkManager.cpp:117
#4  0x00000000004276fe in MarblePart (this=0x81008ffc0, parentWidget=<value
    optimized out>, parent=<value optimized out>, arguments=<value optimized
    out>) at
    /usr/obj/usr/ports/astro/marble/work/marble-4.11.2/src/marble_part.cpp:171
#5  0x0000000000425894 in MainWindow (this=0x810268980, marbleDataPath=<value
    optimized out>, parent=<value optimized out>) at
    /usr/obj/usr/ports/astro/marble/work/marble-4.11.2/src/KdeMainWindow.cpp:41
#6  0x0000000000424a20 in main (argc=<value optimized out>, argv=<value
    optimized out>) at
    /usr/obj/usr/ports/astro/marble/work/marble-4.11.2/src/kdemain.cpp:352

The attached patch fixes that segfault, but it just keeps crashing elsewhere
then. After applying the patch and rebuilding it will crash having
BookmarkManager's helper struct's address within an invalid memory range.

Alonso
--- src/lib/geodata/writer/GeoWriter.cpp.orig	2013-08-28 17:03:55.000000000 +0000
+++ src/lib/geodata/writer/GeoWriter.cpp	2013-10-25 13:17:55.766813347 +0000
@@ -8,6 +8,8 @@
 // Copyright 2009      Andrew Manson <g.real....@gmail.com>
 //
 
+#include <stddef.h>
+
 #include "GeoWriter.h"
 
 #include "GeoTagWriter.h"
@@ -59,6 +61,11 @@
 {
     // Add checks to see that everything is ok here
 
+    if (object == NULL) {
+        mDebug() << "Null Pointer access prevented at GeoWriter::writeElement.";
+        return false;
+    }
+  
     GeoTagWriter::QualifiedName name( object->nodeType(), m_documentType );
     const GeoTagWriter* writer = GeoTagWriter::recognizes( name );
 
_______________________________________________
kde-freebsd mailing list
kde-freebsd@kde.org
https://mail.kde.org/mailman/listinfo/kde-freebsd
See also http://freebsd.kde.org/ for latest information

Reply via email to