Workaround bug in Linux's glibc 2.1: don't fflush(stdout) before
writing to stderr.
/* -----------------------------------------------------------------------------
/* -----------------------------------------------------------------------------
- * $Id: PrimOps.hc,v 1.27 1999/05/13 17:31:11 simonm Exp $
+ * $Id: PrimOps.hc,v 1.28 1999/07/14 13:42:28 simonmar Exp $
*
* (c) The GHC Team, 1998-1999
*
*
* (c) The GHC Team, 1998-1999
*
mvar = (StgMVar *)R1.p;
if (GET_INFO(mvar) == &FULL_MVAR_info) {
mvar = (StgMVar *)R1.p;
if (GET_INFO(mvar) == &FULL_MVAR_info) {
fprintf(stderr, "putMVar#: MVar already full.\n");
stg_exit(EXIT_FAILURE);
}
fprintf(stderr, "putMVar#: MVar already full.\n");
stg_exit(EXIT_FAILURE);
}
/* -----------------------------------------------------------------------------
/* -----------------------------------------------------------------------------
- * $Id: Signals.c,v 1.6 1999/06/25 09:16:46 simonmar Exp $
+ * $Id: Signals.c,v 1.7 1999/07/14 13:39:46 simonmar Exp $
*
* (c) The GHC Team, 1998-1999
*
*
* (c) The GHC Team, 1998-1999
*
I_ i;
if (sig < nHandlers)
I_ i;
if (sig < nHandlers)
- handlers = (I_ *) malloc((sig + 1) * sizeof(I_));
+ handlers = (I_ *) malloc((sig + 1) * sizeof(I_));
- handlers = (I_ *) realloc(handlers, (sig + 1) * sizeof(I_));
+ handlers = (I_ *) realloc(handlers, (sig + 1) * sizeof(I_));
- fflush(stdout);
- fprintf(stderr, "VM exhausted (in more_handlers)\n");
- exit(EXIT_FAILURE);
+ /* don't fflush(stdout); WORKAROUND bug in Linux glibc */
+ fprintf(stderr, "VM exhausted (in more_handlers)\n");
+ exit(EXIT_FAILURE);
}
for(i = nHandlers; i <= sig; i++)
}
for(i = nHandlers; i <= sig; i++)
- /* Fill in the new slots with default actions */
- handlers[i] = STG_SIG_DFL;
+ /* Fill in the new slots with default actions */
+ handlers[i] = STG_SIG_DFL;
StgInt
sig_install(StgInt sig, StgInt spi, StgStablePtr handler, sigset_t *mask)
{
StgInt
sig_install(StgInt sig, StgInt spi, StgStablePtr handler, sigset_t *mask)
{
- fflush(stdout);
- fprintf(stderr,
- "No signal handling support in a parallel implementation.\n");
- exit(EXIT_FAILURE);
+ /* don't fflush(stdout); WORKAROUND bug in Linux glibc */
+ fprintf(stderr,
+ "No signal handling support in a parallel implementation.\n");
+ exit(EXIT_FAILURE);