Package: libjavascriptcoregtk-4.0-18
Version: 2.28.0-2
Severity: important

Dear Maintainer,

The attached very simple C program makes WebKitWebProcess crash on ppc64el.

I managed to get a stacktrace using the following steps:

(gdb) b g_subprocess_launcher_new
(gdb) r
Thread 1 "test" hit Breakpoint 1 ...
(gdb) set follow-fork-mode child
(gdb) c
Thread 2.1 "WebKitWebProces" received signal SIGABRT, Aborted.

The crash happens in:

#0  0x00007ffff3f16f58 in __libc_signal_restore_set (set=0x7fffffffd838) at 
../sysdeps/unix/sysv/linux/internal-signals.h:84
#1  __GI_raise (sig=<optimized out>) at ../sysdeps/unix/sysv/linux/raise.c:48
#2  0x00007ffff3ef7e8c in __GI_abort () at abort.c:79
#3  0x00007ffff2066f74 in CRASH_WITH_INFO(...) () at 
DerivedSources/ForwardingHeaders/wtf/Assertions.h:660
#4  JSC::Config::permanentlyFreeze() () at 
../Source/JavaScriptCore/runtime/JSCConfig.cpp:78
#5  0x00007ffff2284510 in JSC::VM::VM(JSC::VM::VMType, JSC::HeapType) () at 
../Source/JavaScriptCore/runtime/VM.cpp:586
#6  0x00007ffff2285764 in JSC::VM::create(JSC::HeapType) () at 
../Source/JavaScriptCore/runtime/VM.cpp:703
#7  0x00007ffff5beced8 in WebCore::commonVMSlow() () at 
../Source/WebCore/bindings/js/CommonVM.cpp:55
#8  0x00007ffff635b504 in WebCore::commonVM() () at 
../Source/WebCore/bindings/js/CommonVM.h:52

Line 78 of JSCConfig.cpp and the preceding code is:

#elif OS(LINUX)
    result = mprotect(&g_jscConfig, ConfigSizeToProtect, PROT_READ);
#elif OS(WINDOWS)
    // FIXME: Implement equivalent, maybe with VirtualProtect.
    // Also need to fix WebKitTestRunner.
#endif
    RELEASE_ASSERT(!result);

The complete stack trace is also attached.

--
Dmitry Shachnev
#include <glib.h>
#include <glib/gprintf.h>
#include <gtk/gtk.h>
#include <webkit2/webkit2.h>

void web_process_terminated(G_GNUC_UNUSED WebKitWebView *view,
                            WebKitWebProcessTerminationReason reason,
                            G_GNUC_UNUSED gpointer user_data) {
    if (reason == WEBKIT_WEB_PROCESS_CRASHED) {
        g_printf("The process crashed.\n");
    }
    gtk_main_quit();
}

int main(int argc, char **argv) {
    gtk_init(&argc, &argv);

    WebKitWebView *view = WEBKIT_WEB_VIEW(webkit_web_view_new());
    g_object_ref(view);
    g_signal_connect(view, "web-process-terminated", G_CALLBACK(web_process_terminated), NULL);

    webkit_web_view_load_html(view, "<html></html>", NULL);

    gtk_main();

    return 0;
}
#0  0x00007ffff3f16f58 in __libc_signal_restore_set (set=0x7fffffffd838) at 
../sysdeps/unix/sysv/linux/internal-signals.h:84
#1  __GI_raise (sig=<optimized out>) at ../sysdeps/unix/sysv/linux/raise.c:48
#2  0x00007ffff3ef7e8c in __GI_abort () at abort.c:79
#3  0x00007ffff2066f74 in CRASH_WITH_INFO(...) () at 
DerivedSources/ForwardingHeaders/wtf/Assertions.h:660
#4  JSC::Config::permanentlyFreeze() () at 
../Source/JavaScriptCore/runtime/JSCConfig.cpp:78
#5  0x00007ffff2284510 in JSC::VM::VM(JSC::VM::VMType, JSC::HeapType) () at 
../Source/JavaScriptCore/runtime/VM.cpp:586
#6  0x00007ffff2285764 in JSC::VM::create(JSC::HeapType) () at 
../Source/JavaScriptCore/runtime/VM.cpp:703
#7  0x00007ffff5beced8 in WebCore::commonVMSlow() () at 
../Source/WebCore/bindings/js/CommonVM.cpp:55
#8  0x00007ffff635b504 in WebCore::commonVM() () at 
../Source/WebCore/bindings/js/CommonVM.h:52
#9  WebCore::PageScriptDebugServer::PageScriptDebugServer(WebCore::Page&) () at 
../Source/WebCore/inspector/PageScriptDebugServer.cpp:58
#10 0x00007ffff6343c28 in 
WebCore::InspectorController::InspectorController(WebCore::Page&, 
WebCore::InspectorClient*) () at 
../Source/WebCore/inspector/InspectorController.cpp:105
#11 0x00007ffff661b9f8 in std::make_unique<WebCore::InspectorController, 
WebCore::Page&, WebCore::InspectorClient*&>(WebCore::Page&, 
WebCore::InspectorClient*&) ()
    at /usr/include/c++/9/bits/unique_ptr.h:857
#12 WTF::makeUnique<WebCore::InspectorController, WebCore::Page&, 
WebCore::InspectorClient*&>(WebCore::Page&, WebCore::InspectorClient*&) ()
    at DerivedSources/ForwardingHeaders/wtf/StdLibExtras.h:483
#13 WebCore::Page::Page(WebCore::PageConfiguration&&) () at 
../Source/WebCore/page/Page.cpp:279
#14 0x00007ffff513eff4 in std::make_unique<WebCore::Page, 
WebCore::PageConfiguration>(WebCore::PageConfiguration&&) () at 
/usr/include/c++/9/bits/unique_ptr.h:857
#15 WTF::makeUnique<WebCore::Page, 
WebCore::PageConfiguration>(WebCore::PageConfiguration&&) () at 
DerivedSources/ForwardingHeaders/wtf/StdLibExtras.h:483
#16 
WebKit::WebPage::WebPage(WTF::ObjectIdentifier<WebCore::PageIdentifierType>, 
WebKit::WebPageCreationParameters&&) () at 
../Source/WebKit/WebProcess/WebPage/WebPage.cpp:536
#17 0x00007ffff513fdd4 in 
WebKit::WebPage::create(WTF::ObjectIdentifier<WebCore::PageIdentifierType>, 
WebKit::WebPageCreationParameters&&) ()
    at ../Source/WebKit/WebProcess/WebPage/WebPage.cpp:379
#18 0x00007ffff4eff688 in 
WebKit::WebProcess::createWebPage(WTF::ObjectIdentifier<WebCore::PageIdentifierType>,
 WebKit::WebPageCreationParameters&&) ()
    at ../Source/WebKit/WebProcess/WebProcess.cpp:685
#19 0x00007ffff49c7568 in IPC::callMemberFunctionImpl<WebKit::WebProcess, void 
(WebKit::WebProcess::*)(WTF::ObjectIdentifier<WebCore::PageIdentifierType>, 
WebKit::WebPageCreationParameters&&), 
std::tuple<WTF::ObjectIdentifier<WebCore::PageIdentifierType>, 
WebKit::WebPageCreationParameters>, 0ul, 1ul>(WebKit::WebProcess*, void 
(WebKit::WebProcess::*)(WTF::ObjectIdentifier<WebCore::PageIdentifierType>, 
WebKit::WebPageCreationParameters&&), 
std::tuple<WTF::ObjectIdentifier<WebCore::PageIdentifierType>, 
WebKit::WebPageCreationParameters>&&, std::integer_sequence<unsigned long, 0ul, 
1ul>) () at ../Source/WebKit/Platform/IPC/HandleMessage.h:41
#20 IPC::callMemberFunction<WebKit::WebProcess, void 
(WebKit::WebProcess::*)(WTF::ObjectIdentifier<WebCore::PageIdentifierType>, 
WebKit::WebPageCreationParameters&&), 
std::tuple<WTF::ObjectIdentifier<WebCore::PageIdentifierType>, 
WebKit::WebPageCreationParameters>, std::integer_sequence<unsigned long, 0ul, 
1ul> >(std::tuple<WTF::ObjectIdentifier<WebCore::PageIdentifierType>, 
WebKit::WebPageCreationParameters>&&, WebKit::WebProcess*, void 
(WebKit::WebProcess::*)(WTF::ObjectIdentifier<WebCore::PageIdentifierType>, 
WebKit::WebPageCreationParameters&&)) ()
    at ../Source/WebKit/Platform/IPC/HandleMessage.h:47
#21 IPC::handleMessage<Messages::WebProcess::CreateWebPage, WebKit::WebProcess, 
void 
(WebKit::WebProcess::*)(WTF::ObjectIdentifier<WebCore::PageIdentifierType>, 
WebKit::WebPageCreationParameters&&)>(IPC::Decoder&, WebKit::WebProcess*, void 
(WebKit::WebProcess::*)(WTF::ObjectIdentifier<WebCore::PageIdentifierType>, 
WebKit::WebPageCreationParameters&&)) ()
    at ../Source/WebKit/Platform/IPC/HandleMessage.h:120
#22 0x00007ffff49bd764 in 
WebKit::WebProcess::didReceiveWebProcessMessage(IPC::Connection&, 
IPC::Decoder&) () at DerivedSources/WebKit/WebProcessMessageReceiver.cpp:291
#23 0x00007ffff4f084dc in 
WebKit::WebProcess::didReceiveMessage(IPC::Connection&, IPC::Decoder&) () at 
../Source/WebKit/WebProcess/WebProcess.cpp:750
#24 WebKit::WebProcess::didReceiveMessage(IPC::Connection&, IPC::Decoder&) () 
at ../Source/WebKit/WebProcess/WebProcess.cpp:744
#25 0x00007ffff4b7b8a8 in IPC::Connection::dispatchMessage(IPC::Decoder&) () at 
../Source/WebKit/Platform/IPC/Connection.cpp:1008
#26 0x00007ffff4b7d5c4 in 
IPC::Connection::dispatchMessage(std::unique_ptr<IPC::Decoder, 
std::default_delete<IPC::Decoder> >) () at 
../Source/WebKit/Platform/IPC/Connection.cpp:1077
#27 0x00007ffff4b7df54 in IPC::Connection::dispatchOneIncomingMessage() () at 
../Source/WebKit/Platform/IPC/Connection.cpp:1146
#28 0x00007ffff4b7e4a4 in operator() () at 
../Source/WebKit/Platform/IPC/Connection.cpp:985
#29 call() () at DerivedSources/ForwardingHeaders/wtf/Function.h:52
#30 0x00007ffff2357c98 in WTF::Function<void ()>::operator()() const () at 
../Source/WTF/wtf/Function.h:84
#31 WTF::RunLoop::performWork() () at ../Source/WTF/wtf/RunLoop.cpp:124
#32 0x00007ffff23bced8 in operator() () at 
../Source/WTF/wtf/glib/RunLoopGLib.cpp:68
#33 _FUN() () at ../Source/WTF/wtf/glib/RunLoopGLib.cpp:70
#34 0x00007ffff23bcf60 in operator() () at 
../Source/WTF/wtf/glib/RunLoopGLib.cpp:45
#35 _FUN() () at ../Source/WTF/wtf/glib/RunLoopGLib.cpp:46
#36 0x00007ffff2d1cab4 in g_main_dispatch (context=0x1000bcc00) at 
../../../glib/gmain.c:3309
#37 g_main_context_dispatch (context=0x1000bcc00) at ../../../glib/gmain.c:3974
#38 0x00007ffff2d1cfe8 in g_main_context_iterate (context=0x1000bcc00, 
block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at 
../../../glib/gmain.c:4047
#39 0x00007ffff2d1d54c in g_main_loop_run (loop=0x1000e8cc0) at 
../../../glib/gmain.c:4241
#40 0x00007ffff23be104 in WTF::RunLoop::run() () at 
../Source/WTF/wtf/glib/RunLoopGLib.cpp:96
#41 0x00007ffff5175b94 in WebKit::AuxiliaryProcessMain<WebKit::WebProcess, 
WebKit::WebProcessMainGtk>(int, char**) () at 
../Source/WebKit/Shared/AuxiliaryProcessMain.h:68
#42 0x00007ffff5174e88 in WebKit::WebProcessMain(int, char**) () at 
../Source/WebKit/WebProcess/gtk/WebProcessMainGtk.cpp:68
#43 0x00000001000007c0 in main() () at 
../Source/WebKit/WebProcess/EntryPoint/unix/WebProcessMain.cpp:45

Attachment: signature.asc
Description: PGP signature

Reply via email to