blob: 854a11201720d94b5a8f20dd2cfa1fa8a81088e3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
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);
}
|