[webkit-gtk] WTF is in both libjavascriptcoregtk and libwebkit2gtk

Jeremy Huddleston Sequoia jeremyhu at macports.org
Sat Jan 16 11:33:18 PST 2016


> On Jan 16, 2016, at 06:06, Adrián Pérez de Castro <aperez at igalia.com> wrote:
> 
> Hello,
> 
> Quoting Carlos Garcia Campos (2016-01-16 15:03:39)
>> El vie, 15-01-2016 a las 22:57 -0800, Jeremy Huddleston Sequoia
>> escribió:
>>> Hey folks,
>>> 
>>> WebKit2 isn't initializing correctly for us in 2.11.3, and clients
>>> are crashing on initial launch.
>>> 
>>> Philip first mentioned this in https://bugs.webkit.org/show_bug.cgi?i
>>> d=144557, and the issue is currently being tracked in
>>> https://bugs.webkit.org/show_bug.cgi?id=153176
>>> 
>>> Note that this is a regression since 2.4.x, so it may have been this
>>> way for quite a while.
>>> 
>>> The crux of the issue is that WebKit::InitializeWebKit2() calls
>>> JSC::initializeThreading() which calls
>>> WTF::initializeThreading().  However, there are two different copies
>>> of WTF::initializeThreading() in process.  One
>>> WTF::initializeThreading() is in libjavascriptcoregtk, and the other
>>> is in libwebkit2gtk.  The libwebkit2gtk version thus does not get
>>> initialized, and we fail an assertion in here.
>>> 
>>> Obviously, we want just a single instance of this class.
>>> 
>>> Should WTF be a separate dylib?  It sounds like that's appropriate
>>> based on this layering.  Is the WTF API expected to be provided by
>>> both libjavascriptcoregtk and libwebkit2gtk?
>> 
>> I think this is because WebCore and JSC are both linking to WTF
>> statically. Since WebCore depends on JSC maybe we could just remove WTF
>> from WebCore CMakeLists. Could you try removing WTF${DEBUG_SUFFIX}
>> from WebCore_LIBRARIES in Source/WebCore/CMakeLists.txt?

> That may not work: the linker will only pick from static libraries the *.o
> objects it needs. That is: only *.o files from which symbols are used will
> be copied to the output libjavascriptcoregtk.so

Not the case with -Wl,--whole-archive for GNU's linker and -Wl,-all_load as we're doing with ld64.

However, it won't work for a different reason.  Removing WTF${DEBUG_SUFFIX} from WebCore_LIBRARIES will cause clients of libwebkit2gtk that depend on the WTF APIs to fail to link unless they add a new link against libjavascriptcoregtk.  Similarly, existing clients of libwebkit2gtk will no longer find their symbols in libwebkit2gtk and will thus fail to load.

> — if libwebkit2gtk.so uses
> symbols from WTF which pull additional *.o files from the WTF static library,
> then the dynamic linker won't be able to load it at run-time.
> 
> IMHO a shared libWTF.so may as well be the best solution.

Yeah, that's where I was leaning.  That should also hopefully allow us to build with debug symbols.  Currently, the addition of debug symbols causes the resulting static archive to be too large, crashing ar. =(

> 
> Cheers,
> 
> --
> ⌨ Adrian
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4118 bytes
Desc: not available
URL: <https://lists.webkit.org/pipermail/webkit-gtk/attachments/20160116/d7d04db1/attachment-0001.p7s>


More information about the webkit-gtk mailing list