mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-25 23:16:14 +01:00
glocalfilemonitor: Avoid a deadlock on finalization
If `g_file_monitor_source_dispatch()` drops the last reference to its
`GLocalFileMonitor`, a deadlock will occur, because disposing the
`GLocalFileMonitor` causes synchronous disposal of the
`GFileMonitorSource`, and hence an attempt to re-lock the already-locked
mutex in the `GFileMonitorSource`.
Fix that by dropping the reference to the `GLocalFileMonitor` after
unlocking.
Diagnosed by Ting-Wei Lan. The bug was originally introduced by me in
commit 592a13b483
.
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
This commit is contained in:
parent
de74a70b7e
commit
838dc04c76
@ -555,8 +555,8 @@ g_file_monitor_source_dispatch (GSource *source,
|
||||
|
||||
g_file_monitor_source_update_ready_time (fms);
|
||||
|
||||
g_clear_object (&instance);
|
||||
g_mutex_unlock (&fms->lock);
|
||||
g_clear_object (&instance);
|
||||
|
||||
/* We now have our list of events to deliver */
|
||||
while ((event = g_queue_pop_head (&event_queue)))
|
||||
|
Loading…
Reference in New Issue
Block a user