Commit 8f43ce49 authored by Paul Eggert's avatar Paul Eggert

Fix bug re noninteractive multithreaded memory allocation.

* emacs.c (malloc_enable_thread): Hoist extern decl to top level.
(main) [HAVE_PTHREAD && !SYSTEM_MALLOC && !DOUG_LEA_MALLOC]:
Invoke malloc_enable_thread even when not interactive.
Problem reported by Ken Brown in <http://bugs.gnu.org/14569#275>.
* process.c (init_process_emacs) [CYGWIN]: Tickle glib even
in this case, since the underlying bug has now been fixed.
parent 24827db9
2013-07-01 Paul Eggert <eggert@cs.ucla.edu>
Fix bug re noninteractive multithreaded memory allocation (Bug#14569).
* emacs.c (malloc_enable_thread): Hoist extern decl to top level.
(main) [HAVE_PTHREAD && !SYSTEM_MALLOC && !DOUG_LEA_MALLOC]:
Invoke malloc_enable_thread even when not interactive.
Problem reported by Ken Brown in <http://bugs.gnu.org/14569#275>.
* process.c (init_process_emacs) [CYGWIN]: Tickle glib even
in this case, since the underlying bug has now been fixed.
2013-07-01 Juanma Barranquero <lekktu@gmail.com>
* emacs.c (Fkill_emacs): Expand Vauto_save_list_file_name before
......
......@@ -127,6 +127,8 @@ extern int malloc_set_state (void*);
/* True if the MALLOC_CHECK_ environment variable was set while
dumping. Used to work around a bug in glibc's malloc. */
static bool malloc_using_checking;
#elif defined HAVE_PTHREAD && !defined SYSTEM_MALLOC
extern void malloc_enable_thread (void);
#endif
Lisp_Object Qfile_name_handler_alist;
......@@ -1074,13 +1076,8 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem
#endif /* DOS_NT */
}
#if defined (HAVE_PTHREAD) && !defined (SYSTEM_MALLOC) && !defined (DOUG_LEA_MALLOC)
if (! noninteractive)
{
extern void malloc_enable_thread (void);
malloc_enable_thread ();
}
#if defined HAVE_PTHREAD && !defined SYSTEM_MALLOC && !defined DOUG_LEA_MALLOC
malloc_enable_thread ();
#endif
init_signals (dumping);
......
......@@ -7095,15 +7095,11 @@ init_process_emacs (void)
if (! noninteractive || initialized)
#endif
{
#if defined HAVE_GLIB && !defined WINDOWSNT && !defined CYGWIN
#if defined HAVE_GLIB && !defined WINDOWSNT
/* Tickle glib's child-handling code. Ask glib to wait for Emacs itself;
this should always fail, but is enough to initialize glib's
private SIGCHLD handler, allowing the code below to copy it into
LIB_CHILD_HANDLER.
For some reason tickling causes Cygwin bootstrap to fail, so it's
skipped under Cygwin. FIXME: Skipping the tickling likely causes
bugs in subprocess handling under Cygwin (Bug#14569). */
private SIGCHLD handler, allowing catch_child_signal to copy
it into lib_child_handler. */
g_source_unref (g_child_watch_source_new (getpid ()));
#endif
catch_child_signal ();
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment