[webkit-dev] Crash when running Linux Gdk version
Mike Emmel
mike.emmel at gmail.com
Tue Aug 22 21:12:50 PDT 2006
I really would not use the builtin cairo sources.
gdk dynamically links agianst cairo and you have static linked in the
library also.
I have no idea what the result of that is.
If you want to static link then you need to static link gdk pango etc etc.
Mike
On 8/22/06, Krzysztof Kowalczyk <kkowalczyk at gmail.com> wrote:
> After applying linux build fixes patch () and slight modification to
> FontDataGdk.cpp FontData::platformInit() to not use
> cairo_scaled_font_text_extents() so that it can build against libcairo
> 1.0.4 I was able to build gdk version on my Ubuntu 6.05.
>
> However, when I run gdklauncher, I immediately get a crash. I'm quite
> perplexed because looking at sources this should really not happen. I
> was wondering if someone hacking on gdk version also saw this problem
> and knows a solution. I'm leaning towards some configuration issue
> with my system.
>
> Details of the crash:
>
> Program received signal SIGSEGV, Segmentation fault.
> QualifiedName (this=0xb78e026c, p=@0x0, l=@0x0, n=@0x0) at Shared.h:31
> 31 Shared.h: No such file or directory.
> in Shared.h
> (gdb) bt
> #0 QualifiedName (this=0xb78e026c, p=@0x0, l=@0x0, n=@0x0) at Shared.h:31
> #1 0xb741e603 in WebCore::HTMLNames::init () at
> ../../DerivedSources/WebCore/HTMLNames.cpp:72
> #2 0xb74864fd in Frame (this=0x8078380, page=0x0, ownerElement=0x0)
> at ../../page/Frame.cpp:158
> #3 0xb772114a in FrameGdk (this=0x8078380, gdkdrawable=0x805fd20) at
> ../../platform/gdk/FrameGdk.cpp:99
> #4 0x08048b69 in main ()
> (gdb) p *this
> $10 = {m_impl = 0x0}
> (gdb) info reg
> eax 0x0 0
> ecx 0x1 1
> edx 0xbfa96420 -1079417824
> ebx 0xb789b0b0 -1215713104
> esp 0xbfa96410 0xbfa96410
> ebp 0xbfa96458 0xbfa96458
> esi 0xb78e026c -1215430036
> edi 0xbfa964a0 -1079417696
> eip 0xb7603ec0 0xb7603ec0 <QualifiedName+94>
> eflags 0x10282 66178
> cs 0x73 115
> ss 0x7b 123
> ds 0x7b 123
> es 0x7b 123
> fs 0x0 0
> gs 0x33 51
> (gdb) disass $eip-4 $eip+10
> Dump of assembler code from 0xb7603ebc to 0xb7603eca:
> 0xb7603ebc <QualifiedName+90>: mov (%eax),%eax
> 0xb7603ebe <QualifiedName+92>: mov %eax,(%esi)
> 0xb7603ec0 <QualifiedName+94>: addl $0x1,(%eax)
> 0xb7603ec3 <QualifiedName+97>: lea 0xfffffff8(%ebp),%esp
> 0xb7603ec6 <QualifiedName+100>: pop %ebx
> 0xb7603ec7 <QualifiedName+101>: pop %esi
> 0xb7603ec8 <QualifiedName+102>: pop %ebp
> 0xb7603ec9 <QualifiedName+103>: ret
>
> I speculate that this is the instruction that crashes (I can never
> remember if eip points to the intstruction that generated the fault or
> the one after it):
> 0xb7603ec0 <QualifiedName+94>: addl $0x1,(%eax)
> because it tries to dereference memory at address 0.
>
> It looks like it comes from void ref() { m_impl->ref(); } which
> makes sense given that according to gdb m_impl is 0x0. What doesn't
> make sense is that m_impl is 0x0.
>
> It might be because QNAME_DEFAULT_CONSTRUCTOR is defined and somehow a
> default constructor got called. BTW: it seems like
> QualifiedName::ref() has a bug in this case and should have the same
> protection as deref() i.e.
> #ifdef QNAME_DEFAULT_CONSTRUCTOR
> if (!m_impl)
> return;
> #endif
>
> All this originates from the macro in HTMLNames.cpp:
> #define INITIALIZE_TAG_GLOBAL(name) new ((void*)&name##Tag)
> QualifiedName(nullAtom, name##TagString, xhtmlNS);
> DOM_HTMLNAMES_FOR_EACH_TAG(INITIALIZE_TAG_GLOBAL)
>
> Which makes stepping through the code in gdb pretty much impossible
> i.e. I don't see what code is actually generated by gcc.
>
> Any hint appreciated.
>
> -- kjk
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at opendarwin.org
> http://www.opendarwin.org/mailman/listinfo/webkit-dev
>
More information about the webkit-dev
mailing list