diff -ru glib-2.46.0.orig/glib/glib-init.c glib-2.46.0/glib/glib-init.c
--- glib-2.46.0.orig/glib/glib-init.c	2015-10-09 17:20:36.323945372 +0200
+++ glib-2.46.0/glib/glib-init.c	2015-10-12 14:24:38.196943738 +0200
@@ -228,9 +228,16 @@
   g_mem_gc_friendly = flags & 1;
 }
 
-static void
+void
 glib_init (void)
 {
+  static gboolean glib_inited;
+
+  if (glib_inited)
+    return;
+
+  glib_inited = TRUE;
+
   g_messages_prefixed_init ();
   g_debug_init ();
   g_quark_init ();
diff -ru glib-2.46.0.orig/glib/glib-init.h glib-2.46.0/glib/glib-init.h
--- glib-2.46.0.orig/glib/glib-init.h	2015-10-09 17:20:36.319945347 +0200
+++ glib-2.46.0/glib/glib-init.h	2015-10-12 14:24:38.196943738 +0200
@@ -25,6 +25,7 @@
 extern GLogLevelFlags g_log_always_fatal;
 extern GLogLevelFlags g_log_msg_prefix;
 
+void glib_init (void);
 void g_quark_init (void);
 
 #ifdef G_OS_WIN32
diff -ru glib-2.46.0.orig/glib/glib-private.c glib-2.46.0/glib/glib-private.c
--- glib-2.46.0.orig/glib/glib-private.c	2015-10-09 17:20:36.327945397 +0200
+++ glib-2.46.0/glib/glib-private.c	2015-10-12 14:25:11.525145804 +0200
@@ -20,6 +20,7 @@
 #include "config.h"
 
 #include "glib-private.h"
+#include "glib-init.h"
 
 /**
  * glib__private__:
@@ -44,7 +45,9 @@
     g_main_context_new_with_next_id,
 
     g_dir_open_with_errno,
-    g_dir_new_from_dirp
+    g_dir_new_from_dirp,
+
+    glib_init,
   };
 
   return &table;
diff -ru glib-2.46.0.orig/glib/glib-private.h glib-2.46.0/glib/glib-private.h
--- glib-2.46.0.orig/glib/glib-private.h	2015-10-09 17:20:36.319945347 +0200
+++ glib-2.46.0/glib/glib-private.h	2015-10-12 14:24:38.196943738 +0200
@@ -61,6 +61,9 @@
                                                          guint        flags);
   GDir *                (* g_dir_new_from_dirp)         (gpointer dirp);
 
+  /* See glib-init.c */
+  void                  (* glib_init)                   (void);
+
   /* Add other private functions here, initialize them in glib-private.c */
 } GLibPrivateVTable;
 
diff -ru glib-2.46.0.orig/gobject/gtype.c glib-2.46.0/gobject/gtype.c
--- glib-2.46.0.orig/gobject/gtype.c	2015-10-09 17:20:36.347945522 +0200
+++ glib-2.46.0/gobject/gtype.c	2015-10-12 14:24:57.301059560 +0200
@@ -31,6 +31,7 @@
 #include "gatomicarray.h"
 #include "gobject_trace.h"
 
+#include "glib-private.h"
 #include "gconstructor.h"
 
 #ifdef	G_ENABLE_DEBUG
@@ -4376,6 +4377,11 @@
   TypeNode *node;
   GType type;
 
+  /* Ensure GLib is initialized first, see
+   * https://bugzilla.gnome.org/show_bug.cgi?id=756139
+   */
+  GLIB_PRIVATE_CALL (glib_init) ();
+
   G_WRITE_LOCK (&type_rw_lock);
 
   /* setup GObject library wide debugging flags */
