[maemo-commits] [maemo-commits] r10178 - in projects/haf/trunk/python: Modules debian
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Thu Feb 22 16:11:17 EET 2007
- Previous message: [maemo-commits] r10177 - projects/haf/hafbuildbot
- Next message: [maemo-commits] r10179 - in projects/haf/trunk/python-osso: debian src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: luciano Date: 2007-02-22 16:11:11 +0200 (Thu, 22 Feb 2007) New Revision: 10178 Modified: projects/haf/trunk/python/Modules/signalmodule.c projects/haf/trunk/python/debian/changelog projects/haf/trunk/python/debian/control projects/haf/trunk/python/debian/rules Log: fix on race conditions with signals and fix generating pyexpat module Modified: projects/haf/trunk/python/Modules/signalmodule.c =================================================================== --- projects/haf/trunk/python/Modules/signalmodule.c 2007-02-22 14:11:04 UTC (rev 10177) +++ projects/haf/trunk/python/Modules/signalmodule.c 2007-02-22 14:11:11 UTC (rev 10178) @@ -75,7 +75,8 @@ PyObject *func; } Handlers[NSIG]; -static int is_tripped = 0; /* Speed up sigcheck() when none tripped */ +/* Speed up sigcheck() when none tripped */ +static volatile sig_atomic_t is_tripped = 0; static PyObject *DefaultHandler; static PyObject *IgnoreHandler; @@ -122,7 +123,7 @@ /* See NOTES section above */ if (getpid() == main_pid) { #endif - is_tripped++; + is_tripped = 1; Handlers[sig_num].tripped = 1; Py_AddPendingCall(checksignals_witharg, NULL); #ifdef WITH_THREAD @@ -597,13 +598,31 @@ if (!is_tripped) return 0; + #ifdef WITH_THREAD if (PyThread_get_thread_ident() != main_thread) return 0; #endif + + /* + * The is_stripped variable is meant to speed up the calls to + * PyErr_CheckSignals (both directly or via pending calls) when no + * signal has arrived. This variable is set to 1 when a signal arrives + * and it is set to 0 here, when we know some signals arrived. This way + * we can run the registered handlers with no signals blocked. + * + * NOTE: with this approach we can have a situation where is_tripped is + * 1 but we have no more signals to handle (Handlers[i].tripped + * is 0 for every signal i). This won't do us any harm (except + * we're gonna spent some cycles for nothing). This happens when + * we receive a signal i after we zero is_tripped and before we + * check Handlers[i].tripped. + */ + is_tripped = 0; + if (!(f = (PyObject *)PyEval_GetFrame())) f = Py_None; - + for (i = 1; i < NSIG; i++) { if (Handlers[i].tripped) { PyObject *result = NULL; @@ -621,7 +640,7 @@ Py_DECREF(result); } } - is_tripped = 0; + return 0; } @@ -632,8 +651,8 @@ void PyErr_SetInterrupt(void) { - is_tripped++; Handlers[SIGINT].tripped = 1; + is_tripped = 1; Py_AddPendingCall((int (*)(void *))PyErr_CheckSignals, NULL); } Modified: projects/haf/trunk/python/debian/changelog =================================================================== --- projects/haf/trunk/python/debian/changelog 2007-02-22 14:11:04 UTC (rev 10177) +++ projects/haf/trunk/python/debian/changelog 2007-02-22 14:11:11 UTC (rev 10178) @@ -1,3 +1,10 @@ +python2.5 (2.5.0-1osso10) unstable; urgency=low + + * leaves pyexpat module inside python package + * bugfix on race condition with signals + + -- Luciano Miguel Wolf <luciano.wolf at indt.org.br> Thu, 22 Feb 2007 09:15:00 -0300 + python2.5 (2.5.0-1osso9) unstable; urgency=low * compiled with sqlite3 support Modified: projects/haf/trunk/python/debian/control =================================================================== --- projects/haf/trunk/python/debian/control 2007-02-22 14:11:04 UTC (rev 10177) +++ projects/haf/trunk/python/debian/control 2007-02-22 14:11:11 UTC (rev 10178) @@ -2,7 +2,7 @@ Section: python Priority: optional Maintainer: Osvaldo Santana Neto <osvaldo.santana at indt.org.br> -Build-Depends: debhelper (>= 4.2), autoconf, zlib1g-dev, libssl-dev, libbz2-dev, libsqlite3-dev (>= 3.3.5-0.2osso1) +Build-Depends: debhelper (>= 4.2), autoconf, zlib1g-dev, libssl-dev, libbz2-dev, libsqlite3-dev (>= 3.3.5-0.2osso1), dpatch Standards-Version: 3.6.2 Package: python2.5 Modified: projects/haf/trunk/python/debian/rules =================================================================== --- projects/haf/trunk/python/debian/rules 2007-02-22 14:11:04 UTC (rev 10177) +++ projects/haf/trunk/python/debian/rules 2007-02-22 14:11:11 UTC (rev 10178) @@ -79,12 +79,13 @@ $(d_dev)/$(scriptdir)/lib-dynload/audioop.so \ $(d_dev)/$(scriptdir)/lib-dynload/_ctypes_test.so \ $(d_dev)/$(scriptdir)/lib-dynload/_testcapi.so \ - $(d_dev)/$(scriptdir)/lib-dynload/pyexpat.so \ $(d_dev)/$(scriptdir)/idlelib \ $(d_dev)/$(scriptdir)/lib-tk \ $(d_dev)/$(scriptdir)/bsddb \ $(d_dev)/$(scriptdir)/xml/{dom,parsers,sax} +# $(d_dev)/$(scriptdir)/lib-dynload/pyexpat.so \ + # base # ====
- Previous message: [maemo-commits] r10177 - projects/haf/hafbuildbot
- Next message: [maemo-commits] r10179 - in projects/haf/trunk/python-osso: debian src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]