Patches item #846388, was opened at 2003-11-21 07:29 Message generated for change (Comment added) made by loewis You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=305470&aid=846388&group_id=5470
Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Core (C code) Group: Python 2.4 Status: Open Resolution: None Priority: 5 Private: No Submitted By: Josh Hoyt (joshhoyt) >Assigned to: Fredrik Lundh (effbot) Summary: Check for signals during regular expression matches Initial Comment: This patch adds a call to PyErr_CheckSignals to SRE_MATCH so that signal handlers can be invoked during long regular expression matches. It also adds a new error return value indicating that an exception occurred in a signal handler during the match, allowing exceptions in the signal handler to propagate up to the main loop. Rationale: Regular expressions can run away inside of the C code. There is no way for Python code to stop the C code from running away, so we attempted to use setrlimit to interrupt the process when the CPU usage exceeded a limit. When the signal was received, the signal function was triggered. The sre code does not allow the main loop to run, so the triggered handlers were not called until the regular expression finished, if ever. This behaviour makes the interruption by the signal useless for the purposes of constraining the running time of regular expression matches. I am unsure whether the PyErr_CheckSignals is lightweight enough to be called inside of the for loop in SRE_MATCH, so I took the conservative approach and only checked on recursion or match invocation. I believe that the performance hit from this check would not be prohibitive inside of the loop, since PyErr_CheckSignals does very little work unless there is a signal to handle. ---------------------------------------------------------------------- >Comment By: Martin v. Löwis (loewis) Date: 2006-11-14 00:28 Message: Logged In: YES user_id=21627 Fredrik, what do you think about this patch? ---------------------------------------------------------------------- Comment By: Martin v. Löwis (loewis) Date: 2003-11-22 16:14 Message: Logged In: YES user_id=21627 Can you give an example for a SRE matching that is so slow that the user may press Ctrl-C? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=305470&aid=846388&group_id=5470 _______________________________________________ Patches mailing list Patches@python.org http://mail.python.org/mailman/listinfo/patches