mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-08 04:30:45 -08:00
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.
This commit is contained in:
parent
24827db9c4
commit
8f43ce497c
3 changed files with 17 additions and 14 deletions
|
|
@ -1,3 +1,13 @@
|
|||
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
|
||||
|
|
|
|||
11
src/emacs.c
11
src/emacs.c
|
|
@ -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 ();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue