+++ /dev/null
-#!/bin/bash
-# Wrapper for $(LIBTOOL) that performs PaX marking on the dumper binary
-# generated by g-ir-scanner.
-# PaX marking code stolen from pax-utils.eclass
-
-flags=${1//-}; shift
-
-echo ${LIBTOOL} "$@"
-${LIBTOOL} "$@"
-
-retval=$?
-
-files=$(find . -path "*tmp-introspect*/.libs/*")
-
-if type -p paxctl > /dev/null; then
- echo "PT PaX marking -${flags} ${files}"
- for f in ${files}; do
- # First, try modifying the existing PAX_FLAGS header
- paxctl -q${flags} "${f}" && continue
- # Second, try stealing the (unused under PaX) PT_GNU_STACK header
- paxctl -qc${flags} "${f}" && continue
- # Third, try pulling the base down a page, to create space and
- # insert a PT_GNU_STACK header (works on ET_EXEC)
- paxctl -qC${flags} "${f}" && continue
- done
-elif type -p scanelf > /dev/null; then
- # Try scanelf, the Gentoo swiss-army knife ELF utility
- # Currently this sets PT if it can, no option to control what it does.
- echo "Fallback PaX marking -${flags} ${files}"
- scanelf -Xxz ${flags} ${files}
-fi
-
-exit ${retval}
+++ /dev/null
-Description: deadlock in gobject introspection
-Bug-Dyson: http://osdyson.org/issues/161
-Bug-Gentoo: https://bugs.gentoo.org/show_bug.cgi?id=463960
-Stack:
-25849: /home/pashev/packaging/webkitgtk/webkitgtk-2.0.4/build-2.0/tmp-introsp
------------------ lwp# 1 / thread# 1 --------------------
- fffffd7ffeeaf957 lwp_park (0, 0, 0)
- fffffd7ffeea8036 mutex_lock_impl () + 156
- fffffd7ffeea810b mutex_lock () + b
- fffffd7ffee340fa _preexec_atfork_unload () + 3a
- fffffd7ffee343ab _preexec_exit_handlers () + bb
- fffffd7fff5ccf0d purge_exit_handlers () + 10d
- fffffd7fff5cec18 remove_hdl () + ce8
- fffffd7fff5c8895 dlclose_core () + c5
- fffffd7fff5c88e5 dlclose_intn () + 15
- fffffd7fff5c89bb dlclose_check () + 7b
- fffffd7fff5c8a21 dlclose () + 41
- fffffd7ffaa03c41 px_module_manager_load () + 191
- fffffd7ffaa03cf6 px_module_manager_load_dir () + 66
- fffffd7ffaa050d7 px_proxy_factory_new () + 107
- fffffd7ffb201671 ???????? ()
- fffffd7feca30eca g_type_create_instance () + 16a
- fffffd7feca1597c ???????? ()
- fffffd7feca17472 g_object_newv () + 792
- fffffd7feca17aec g_object_new () + ec
- fffffd7fece5d052 ???????? ()
- fffffd7fece5d1d8 ???????? ()
- fffffd7fc98659a5 ???????? ()
- fffffd7feca173f6 g_object_newv () + 716
- fffffd7feca17aec g_object_new () + ec
- fffffd7fc986da24 soup_session_add_feature_by_type () + e4
- fffffd7fc986fb43 ???????? ()
- fffffd7feca17e00 g_object_set_valist () + 300
- fffffd7feca186d7 g_object_set () + e7
- fffffd7fc5724f87 WebCore::ResourceHandle::defaultSession() () + a7
- fffffd7fc48da299 webkitExit() () + 9
- fffffd7ffee33f56 _exithandle () + 66
- fffffd7ffee1e191 exit () + 11
- 00000000004086af ???????? ()
- 000000000040724c _start () + 6c
------------------ lwp# 2 / thread# 2 --------------------
- fffffd7ffeeaf957 lwp_park (0, 0, 0)
- fffffd7ffeea94bf cond_wait_queue () + 4f
- fffffd7ffeea9b12 __cond_wait () + b2
- fffffd7ffeea9b42 cond_wait () + 22
- fffffd7ffeea9b79 pthread_cond_wait () + 9
- fffffd7fc4eed04b WebCore::IconDatabase::syncThreadMainLoop() () + 12b
- fffffd7fc4eed278 WebCore::IconDatabase::iconDatabaseSyncThread() () + 138
- fffffd7fc3b2bc59 WTF::wtfThreadEntryPoint(void*) () + 19
- fffffd7ffeeaf617 _thrp_setup () + 77
- fffffd7ffeeaf910 _lwp_start ()
------------------ lwp# 3 / thread# 3 --------------------
- fffffd7ffeeaf957 lwp_park (0, 0, 0)
- fffffd7ffeea8036 mutex_lock_impl () + 156
- fffffd7ffeea810b mutex_lock () + b
- fffffd7ffee33e17 atexit_locks () + 17
- fffffd7ffee58ce9 libc_prepare_atfork () + 9
- fffffd7ffee34533 _prefork_handler () + 33
- fffffd7ffee9fc85 forkx () + 275
- fffffd7ffee9fcab fork () + b
- fffffd7fec68aacb ???????? ()
- fffffd7fec68b2a7 g_spawn_sync () + 167
- fffffd7fec68b994 g_spawn_command_line_sync () + 74
- fffffd7feceb2748 ???????? ()
- fffffd7feceb4019 g_dbus_address_get_for_bus_sync () + 2c9
- fffffd7fecebd11e ???????? ()
- fffffd7fecec4643 g_bus_get_sync () + 63
- fffffd7ffc60700b ???????? ()
- fffffd7ffc60714f ???????? ()
- fffffd7fec648ad0 g_main_context_dispatch () + 130
- fffffd7fec648e40 ???????? ()
- fffffd7fec648f08 g_main_context_iteration () + 38
- fffffd7ffc606f65 ???????? ()
- fffffd7fec66d50d ???????? ()
- fffffd7ffeeaf617 _thrp_setup () + 77
- fffffd7ffeeaf910 _lwp_start ()
-Index: webkit/Source/WebKit/gtk/webkit/webkitglobals.cpp
-===================================================================
---- webkit.orig/Source/WebKit/gtk/webkit/webkitglobals.cpp 2013-12-02 00:06:10.504150531 +0400
-+++ webkit/Source/WebKit/gtk/webkit/webkitglobals.cpp 2013-12-03 14:08:05.956932011 +0400
-@@ -564,6 +564,14 @@
-
- WebCore::SchemeRegistry::registerURLSchemeAsLocal("resource");
-
-+ // http://osdyson.org/issues/161
-+ // WebKitGTK FTBFS when building GObject introspection due to deadlock.
-+ // When gobject introspection is done, a simple program call exit()
-+ // exit() -> webkitExit() -> g_object_unref() -> webkit_get_default_session()
-+ // -> ResourceHandle::defaultSession() => default session doesn't exist! AND
-+ // we try to create it! Thus deadlock. So, create default session earlier:
-+ (void) webkit_get_default_session();
-+
- atexit(webkitExit);
- }
-
+++ /dev/null
-From 7960c437511c650ad33708f4e42457118d95a13d Mon Sep 17 00:00:00 2001
-From: Gilles Dartiguelongue <eva@gentoo.org>
-Date: Sun, 19 Oct 2014 19:43:09 +0200
-Subject: [PATCH 4/4] Do not use std::atomic on PPC
-
-$OpenBSD: patch-Source_WebKit2_Platform_IPC_Connection_h,v 1.2 2014/07/14 21:13:31 ajacoutot Exp $
-
-https://bugs.webkit.org/show_bug.cgi?id=130837
----
- Source/WebKit2/Platform/IPC/Connection.h | 4 ++++
- Source/WebKit2/UIProcess/StatisticsRequest.cpp | 4 ++++
- 2 files changed, 8 insertions(+)
-
-diff --git a/Source/WebKit2/Platform/IPC/Connection.h b/Source/WebKit2/Platform/IPC/Connection.h
-index b52cf1e..5597e94 100644
---- a/Source/WebKit2/Platform/IPC/Connection.h
-+++ b/Source/WebKit2/Platform/IPC/Connection.h
-@@ -233,7 +233,11 @@ private:
-
- Client* m_client;
- bool m_isServer;
-+#if CPU(PPC)
-+ uint64_t m_syncRequestID;
-+#else
- std::atomic<uint64_t> m_syncRequestID;
-+#endif
-
- bool m_onlySendMessagesAsDispatchWhenWaitingForSyncReplyWhenProcessingSuchAMessage;
- bool m_shouldExitOnSyncMessageSendFailure;
-diff --git a/Source/WebKit2/UIProcess/StatisticsRequest.cpp b/Source/WebKit2/UIProcess/StatisticsRequest.cpp
-index bc0a1e6..ef259d1 100644
---- a/Source/WebKit2/UIProcess/StatisticsRequest.cpp
-+++ b/Source/WebKit2/UIProcess/StatisticsRequest.cpp
-@@ -44,7 +44,11 @@ StatisticsRequest::~StatisticsRequest()
-
- uint64_t StatisticsRequest::addOutstandingRequest()
- {
-+#if CPU(PPC)
-+ static int64_t uniqueRequestID;
-+#else
- static std::atomic<int64_t> uniqueRequestID;
-+#endif
-
- uint64_t requestID = ++uniqueRequestID;
- m_outstandingRequests.add(requestID);
---
-2.1.2
-