[postgis-tickets] r15157 - Do not call printf from interrupt handler, fixing deadlocks

Sandro Santilli strk at kbt.io
Tue Sep 27 01:12:03 PDT 2016


Author: strk
Date: 2016-09-27 01:12:03 -0700 (Tue, 27 Sep 2016)
New Revision: 15157

Modified:
   branches/2.3/NEWS
   branches/2.3/postgis/postgis_module.c
Log:
Do not call printf from interrupt handler, fixing deadlocks

Closes #3644 for 2.3 branch

Modified: branches/2.3/NEWS
===================================================================
--- branches/2.3/NEWS	2016-09-27 08:04:34 UTC (rev 15156)
+++ branches/2.3/NEWS	2016-09-27 08:12:03 UTC (rev 15157)
@@ -3,6 +3,7 @@
 
   * Bug Fixes
   - #3643 PostGIS not building on latest OSX XCode
+  - #3644 Deadlock on interrupt
 
 PostGIS 2.3.0
 2016/09/26
@@ -14,7 +15,7 @@
 
   - #3604, pgcommon/Makefile.in orders CFLAGS incorrectly leading to
            wrong liblwgeom.h (Greg Troxel)
-   
+
   - #3396, ST_EstimatedExtent, throw WARNING instead of ERROR
            (Regina Obe)
 
@@ -33,7 +34,7 @@
   - #1758, ST_Normalize (Sandro Santilli)
   - #2236, shp2pgsql -d now emits "DROP TABLE IF EXISTS"
   - #2259, ST_VoronoiPolygons and ST_VoronoiLines (Dan Baston)
-  - #2841 and #2996, ST_MinimumBoundingRadius and new ST_MinimumBoundingCircle 
+  - #2841 and #2996, ST_MinimumBoundingRadius and new ST_MinimumBoundingCircle
            implementation using Welzl's algorithm (Dan Baston)
   - #2991, Enable ST_Transform to use PROJ.4 text (Mike Toews)
   - #3059, Allow passing per-dimension parameters in ST_Expand (Dan Baston)

Modified: branches/2.3/postgis/postgis_module.c
===================================================================
--- branches/2.3/postgis/postgis_module.c	2016-09-27 08:04:34 UTC (rev 15156)
+++ branches/2.3/postgis/postgis_module.c	2016-09-27 08:12:03 UTC (rev 15157)
@@ -127,7 +127,12 @@
 static void
 handleInterrupt(int sig)
 {
-  printf("Interrupt requested\n"); fflush(stdout);
+  /* NOTE: printf here would be dangerous, see
+   * https://trac.osgeo.org/postgis/ticket/3644
+   *
+   * TODO: block interrupts during execution, to fix the problem
+   */
+  /* printf("Interrupt requested\n"); fflush(stdout); */
 
 #if POSTGIS_GEOS_VERSION >= 34
   GEOS_interruptRequest();



More information about the postgis-tickets mailing list