[gegl] Issue #229 - Segfault when running out of swap space with RLE compression
- From: Ell <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] Issue #229 - Segfault when running out of swap space with RLE compression
- Date: Sun, 15 Mar 2020 20:47:27 +0000 (UTC)
commit f025dc36e7147e32a228c07916f62b1752eab046
Author: Ell <ell_se yahoo com>
Date: Sun Mar 15 22:38:21 2020 +0200
Issue #229 - Segfault when running out of swap space with RLE compression
In the swap backend, when writing a tile to disk fails (usually,
when running out of space), free the corresponding block, so that
attempting to later read it back returns a NULL tile. Previously,
we'd just read back junk, which would then segfault when attempting
to RLE-decompress the data.
gegl/buffer/gegl-tile-backend-swap.c | 4 ++++
1 file changed, 4 insertions(+)
---
diff --git a/gegl/buffer/gegl-tile-backend-swap.c b/gegl/buffer/gegl-tile-backend-swap.c
index 4a60c5d33..7adb1140b 100644
--- a/gegl/buffer/gegl-tile-backend-swap.c
+++ b/gegl/buffer/gegl-tile-backend-swap.c
@@ -638,6 +638,10 @@ gegl_tile_backend_swap_write (ThreadParams *params)
wrote = write (out_fd, data, to_be_written);
if (wrote <= 0)
{
+ g_atomic_pointer_add (&total_uncompressed, -params->size);
+
+ gegl_tile_backend_swap_free_block (params->block);
+
g_message ("unable to write tile data to self: "
"%s (%d/%d bytes written)",
g_strerror (errno), wrote, to_be_written);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]