1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00

Fix non-deterministic crash in 'finalization_thread_proc'.

Fixes <https://bugs.gnu.org/37757>.
Reported by Jesse Gibbons <jgibbons2357@gmail.com>.

* libguile/finalizers.c (finalization_thread_proc): Do not enter the
"switch (data.byte)" condition when data.n <= 0.
This commit is contained in:
Ludovic Courtès 2019-12-09 14:44:59 +01:00
parent 659526d33b
commit edf5aea7ac

View file

@ -1,4 +1,4 @@
/* Copyright (C) 2012, 2013, 2014 Free Software Foundation, Inc.
/* Copyright (C) 2012, 2013, 2014, 2019 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@ -211,12 +211,16 @@ finalization_thread_proc (void *unused)
scm_without_guile (read_finalization_pipe_data, &data);
if (data.n <= 0 && data.err != EINTR)
if (data.n <= 0)
{
if (data.err != EINTR)
{
perror ("error in finalization thread");
return NULL;
}
}
else
{
switch (data.byte)
{
case 0:
@ -228,6 +232,7 @@ finalization_thread_proc (void *unused)
abort ();
}
}
}
}
static void*