Do not enable asynchronous cancellation in system. Fixes bug 14782.
authorOndřej Bílka <neleai@seznam.cz>
Tue, 14 Jan 2014 15:07:50 +0000 (16:07 +0100)
committerOndřej Bílka <neleai@seznam.cz>
Wed, 15 Jan 2014 17:39:21 +0000 (18:39 +0100)
We needlessly enabled thread cancellation before it was necessary. As
only call that needs to be guarded is waitpid which is cancellation
point we could remove cancellation altogether.

NEWS
sysdeps/posix/system.c

diff --git a/NEWS b/NEWS
index 7e30dd4..f406522 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -12,20 +12,20 @@ Version 2.19
   156, 387, 431, 762, 832, 926, 2801, 4772, 6786, 6787, 6807, 6810, 7003,
   9721, 9954, 10253, 10278, 11087, 11157, 11214, 12100, 12486, 12986,
   13028, 13982, 13985, 14029, 14032, 14120, 14143, 14155, 14286, 14547,
-  14699, 14752, 14876, 14910, 15004, 15048, 15073, 15089, 15128, 15218,
-  15268, 15277, 15308, 15362, 15374, 15400, 15425, 15427, 15483, 15522,
-  15531, 15532, 15593, 15601, 15608, 15609, 15610, 15632, 15640, 15670,
-  15672, 15680, 15681, 15723, 15734, 15735, 15736, 15748, 15749, 15754,
-  15760, 15763, 15764, 15797, 15799, 15825, 15843, 15844, 15846, 15847,
-  15849, 15850, 15855, 15856, 15857, 15859, 15867, 15886, 15887, 15890,
-  15892, 15893, 15895, 15897, 15901, 15905, 15909, 15915, 15917, 15919,
-  15921, 15923, 15939, 15941, 15948, 15963, 15966, 15985, 15988, 15997,
-  16032, 16034, 16036, 16037, 16038, 16041, 16055, 16071, 16072, 16074,
-  16077, 16078, 16103, 16112, 16133, 16143, 16144, 16146, 16150, 16151,
-  16153, 16167, 16172, 16195, 16214, 16245, 16271, 16274, 16283, 16289,
-  16293, 16314, 16316, 16330, 16337, 16338, 16356, 16365, 16366, 16369,
-  16372, 16375, 16379, 16384, 16385, 16386, 16387, 16390, 16394, 16400,
-  16407, 16408, 16414.
+  14699, 14752, 14782, 14876, 14910, 15004, 15048, 15073, 15089, 15128,
+  15218, 15268, 15277, 15308, 15362, 15374, 15400, 15425, 15427, 15483,
+  15522, 15531, 15532, 15593, 15601, 15608, 15609, 15610, 15632, 15640,
+  15670, 15672, 15680, 15681, 15723, 15734, 15735, 15736, 15748, 15749,
+  15754, 15760, 15763, 15764, 15797, 15799, 15825, 15843, 15844, 15846,
+  15847, 15849, 15850, 15855, 15856, 15857, 15859, 15867, 15886, 15887,
+  15890, 15892, 15893, 15895, 15897, 15901, 15905, 15909, 15915, 15917,
+  15919, 15921, 15923, 15939, 15941, 15948, 15963, 15966, 15985, 15988,
+  15997, 16032, 16034, 16036, 16037, 16038, 16041, 16055, 16071, 16072,
+  16074, 16077, 16078, 16103, 16112, 16133, 16143, 16144, 16146, 16150,
+  16151, 16153, 16167, 16172, 16195, 16214, 16245, 16271, 16274, 16283,
+  16289, 16293, 16314, 16316, 16330, 16337, 16338, 16356, 16365, 16366,
+  16369, 16372, 16375, 16379, 16384, 16385, 16386, 16387, 16390, 16394,
+  16400, 16407, 16408, 16414.
 
 * Slovenian translations for glibc messages have been contributed by the
   Translation Project's Slovenian team of translators.
index de71e6b..e8b921f 100644 (file)
@@ -181,15 +181,6 @@ __libc_system (const char *line)
        not be available after a chroot(), for example.  */
     return do_system ("exit 0") == 0;
 
-  if (SINGLE_THREAD_P)
-    return do_system (line);
-
-  int oldtype = LIBC_CANCEL_ASYNC ();
-
-  int result = do_system (line);
-
-  LIBC_CANCEL_RESET (oldtype);
-
-  return result;
+  return do_system (line);
 }
 weak_alias (__libc_system, system)