From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 18 19:41:06 2012 Received: (at submit) by debbugs.gnu.org; 18 Sep 2012 23:41:06 +0000 Received: from localhost ([127.0.0.1]:42416 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TE7Pd-0002NX-TV for submit@debbugs.gnu.org; Tue, 18 Sep 2012 19:41:06 -0400 Received: from eggs.gnu.org ([208.118.235.92]:51558) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TE7PZ-0002NK-R2 for submit@debbugs.gnu.org; Tue, 18 Sep 2012 19:41:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TE7OE-0006ZD-99 for submit@debbugs.gnu.org; Tue, 18 Sep 2012 19:39:39 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:37106) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TE7OE-0006Z5-64 for submit@debbugs.gnu.org; Tue, 18 Sep 2012 19:39:38 -0400 Received: from eggs.gnu.org ([208.118.235.92]:39182) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TE7OD-0001GM-9O for bug-gnu-emacs@gnu.org; Tue, 18 Sep 2012 19:39:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TE7OC-0006Yo-5W for bug-gnu-emacs@gnu.org; Tue, 18 Sep 2012 19:39:37 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:59176) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TE7OB-0006XN-JX; Tue, 18 Sep 2012 19:39:36 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id B8760A60004; Tue, 18 Sep 2012 16:39:26 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 78CBTdeVTffl; Tue, 18 Sep 2012 16:39:26 -0700 (PDT) Received: from [192.168.1.3] (pool-108-23-119-2.lsanca.fios.verizon.net [108.23.119.2]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id C3B6AA60001; Tue, 18 Sep 2012 16:39:25 -0700 (PDT) Message-ID: <50590626.2070407@cs.ucla.edu> Date: Tue, 18 Sep 2012 16:39:18 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120827 Thunderbird/15.0 MIME-Version: 1.0 To: bug-gnu-emacs@gnu.org Subject: Avoid some signal-handling races, and simplify. Content-Type: multipart/mixed; boundary="------------080209000808020008050804" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Spam-Score: -6.2 (------) X-Debbugs-Envelope-To: submit Cc: Juanma Barranquero , Eli Zaretskii X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.2 (------) This is a multi-part message in MIME format. --------------080209000808020008050804 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Tags: patch I looked through emacs for race conditions involving signals and found some problems, including: * Signal handlers can interrupt each other, leading to races. * Signals can be mishandled if they arrive right in the middle of code that is keeping track of whether signals have arrived. * Some variables are modified by signal handlers but are not declared 'volatile', which means accesses to them could be incorrectly optimized. * When debugging, the debugging code can get into an infinite signal-handling loop if there's a bug in the fatal error handler. * There are some bugs involving running out of memory in the middle of a vfork, in which signal handlers aren't restored correctly and Emacs is likely to misbehave. * Signals are always redirected to the main thread, resulting in incorrect backtraces when, for example, a subsidiary thread has a segmentation violation. Thread-specific signals like SIGSEGV should have thread-specific backtraces. * When in batch mode, Emacs doesn't ignore SIGINT if the invoker has purposely ignored SIGINT. Similarly for SIGTERM. Emacs gets SIGHUP right, but the other two signals should be consistent with the usual behavior for batch programs. * Emacs isn't consistent about what tests it uses to decide whether it is in batch mode, leading to glitches when the tests disagree. * Emacs catches SIGPIPE, but it's better to ignore it, as this avoids races. * Emacs catches SIGFPE, but on IEEE hosts catching SIGFPE isn't needed and can mask bugs; it's better to catch SIGFPE only on (the now quite rare) non-IEEE hosts. Attached is a patch to fix some of the problems that I found, and to simplify nearby signal-handling code. I'd like to install this into the trunk before it freezes. The patch is about 3300 lines so I've taken the liberty of compressing it with gzip. This patch affects a few bits of the Windows code; I haven't tested that part. I'm CC:ing this to Eli and Juanma to give them a heads-up. --------------080209000808020008050804 Content-Type: application/x-gzip; name="syssignap.txt.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="syssignap.txt.gz" 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 --------------080209000808020008050804-- From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 19 12:20:38 2012 Received: (at submit) by debbugs.gnu.org; 19 Sep 2012 16:20:38 +0000 Received: from localhost ([127.0.0.1]:43845 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TEN0w-00041n-FL for submit@debbugs.gnu.org; Wed, 19 Sep 2012 12:20:38 -0400 Received: from eggs.gnu.org ([208.118.235.92]:54483) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TEN0v-00041g-2P for submit@debbugs.gnu.org; Wed, 19 Sep 2012 12:20:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TEMzQ-0000HH-SU for submit@debbugs.gnu.org; Wed, 19 Sep 2012 12:19:10 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:44040) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TEMzQ-0000HD-Pw for submit@debbugs.gnu.org; Wed, 19 Sep 2012 12:19:04 -0400 Received: from eggs.gnu.org ([208.118.235.92]:57262) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TEMzK-0005NS-Sz for bug-gnu-emacs@gnu.org; Wed, 19 Sep 2012 12:19:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TEMz9-0000Bo-IH for bug-gnu-emacs@gnu.org; Wed, 19 Sep 2012 12:18:58 -0400 Received: from mtaout20.012.net.il ([80.179.55.166]:55550) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TEMz9-0000BA-AB for bug-gnu-emacs@gnu.org; Wed, 19 Sep 2012 12:18:47 -0400 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0MAL00400UKZ7E00@a-mtaout20.012.net.il> for bug-gnu-emacs@gnu.org; Wed, 19 Sep 2012 19:18:29 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MAL003RHUMT8BR0@a-mtaout20.012.net.il>; Wed, 19 Sep 2012 19:18:29 +0300 (IDT) Date: Wed, 19 Sep 2012 19:18:41 +0300 From: Eli Zaretskii Subject: Re: Avoid some signal-handling races, and simplify. In-reply-to: <50590626.2070407@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <83lig6yoim.fsf@gnu.org> References: <50590626.2070407@cs.ucla.edu> X-detected-operating-system: by eggs.gnu.org: Solaris 10 (beta) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Spam-Score: -7.5 (-------) X-Debbugs-Envelope-To: submit Cc: lekktu@gmail.com, bug-gnu-emacs@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -7.5 (-------) > Date: Tue, 18 Sep 2012 16:39:18 -0700 > From: Paul Eggert > CC: Eli Zaretskii , Juanma Barranquero > > Attached is a patch to fix some of the problems that I found, and to > simplify nearby signal-handling code. Thanks. I have a few questions/comments: -#define UNBLOCK_INPUT \ - do \ - { \ - --interrupt_input_blocked; \ - if (interrupt_input_blocked == 0) \ - { \ - if (interrupt_input_pending) \ - reinvoke_input_signal (); \ - if (pending_atimers) \ - do_pending_atimers (); \ - } \ - else if (interrupt_input_blocked < 0) \ - emacs_abort (); \ - } \ - while (0) +extern void unblock_input (void); Why is it a good idea to replace this macro with a function? The macro is used quite frequently in the code; replacing it with a function might slow down Emacs, and for what good reason? +extern void UNBLOCK_INPUT_TO (int); A function whose name is in CAPS? Why? /* Report a fatal error due to signal SIG, output a backtrace of at most BACKTRACE_LIMIT lines, and exit. */ _Noreturn void -fatal_error_backtrace (int sig, int backtrace_limit) +terminate_due_to_signal (int sig, int backtrace_limit) { fatal_error_code = sig; - signal (sig, SIG_DFL); TOTALLY_UNBLOCK_INPUT; @@ -316,9 +302,8 @@ } /* Signal the same code; this time it will really be fatal. - Remember that since we're in a signal handler, the signal we're - going to send is probably blocked, so we have to unblock it if we - want to really receive it. */ + Since we're in a signal handler, the signal is blocked, so we + have to unblock it if we want to really receive it. */ #ifndef MSDOS { sigset_t unblocked; @@ -328,7 +313,7 @@ } #endif - kill (getpid (), fatal_error_code); + raise (fatal_error_code); If there are good reasons to prefer 'raise' to 'kill' in this context, can we please special-case SIGABRT here and call 'emacs_abort' directly, at least for hosts that cannot produce the backtrace? Otherwise, assertion violations will not end up in 'emacs_abort', AFAICS. static void deliver_interrupt_signal (int sig) { - handle_on_main_thread (sig, handle_interrupt_signal); + deliver_process_signal (sig, handle_interrupt_signal); } Do we really need this double indirection? Why not call deliver_process_signal directly (here and elsewhere)? -#ifdef SIGTERM parse_signal ("term", SIGTERM); -#endif I don't understand why did you remove the conditional. This won't compile if SIGTERM isn't defined. Did you assume that it is always available? + if (! IEEE_FLOATING_POINT) + sigaddset (&action->sa_mask, SIGFPE); Why is IEEE_FLOATING_POINT, which detects the representation of FP numbers, related to SIGFPE? -# ifdef SIGTERM sys_siglist[SIGTERM] = "Terminated"; -# endif This won't compile if SIGTERM is not defined. + maybe_fatal_sig (SIGTERM); Same here. + sigaction (SIGTERM, &process_fatal_action, 0); And here. + if (! IEEE_FLOATING_POINT) + { + emacs_sigaction_init (&action, deliver_arith_signal); + sigaction (SIGFPE, &action, 0); + } See above: why? - return ret; + return nev; This should be in a separate commit, as it is unrelated. From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 19 12:47:12 2012 Received: (at 12471) by debbugs.gnu.org; 19 Sep 2012 16:47:12 +0000 Received: from localhost ([127.0.0.1]:43886 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TENQd-0004h3-SH for submit@debbugs.gnu.org; Wed, 19 Sep 2012 12:47:12 -0400 Received: from mailout.attendit.se ([83.140.103.4]:51942) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TENQb-0004gr-5O for 12471@debbugs.gnu.org; Wed, 19 Sep 2012 12:47:10 -0400 Received: from mail01.melmac.se (mail01.melmac.se [62.20.26.80]) by mailout.attendit.se (Postfix) with ESMTP id 72EEE50141 for <12471@debbugs.gnu.org>; Wed, 19 Sep 2012 18:39:33 +0200 (CEST) Received: (qmail 9517 invoked by uid 89); 19 Sep 2012 16:45:12 -0000 Received: from h-46-59-42-18.na.cust.bahnhof.se (HELO coolsville.localdomain) (boel.djarv@bdtv.se@46.59.42.18) by mail01.melmac.se with ESMTPA; 19 Sep 2012 16:45:12 -0000 Received: from [172.20.199.13] (zeplin [172.20.199.13]) by coolsville.localdomain (Postfix) with ESMTPSA id E3B057FA05E; Wed, 19 Sep 2012 18:45:38 +0200 (CEST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 6.0 \(1486\)) Subject: Re: bug#12471: Avoid some signal-handling races, and simplify. From: =?iso-8859-1?Q?Jan_Dj=E4rv?= In-Reply-To: <50590626.2070407@cs.ucla.edu> Date: Wed, 19 Sep 2012 18:45:39 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: <357A45C4-8E4E-43AA-AF8B-BE2C5B056BA0@swipnet.se> References: <50590626.2070407@cs.ucla.edu> To: Paul Eggert X-Mailer: Apple Mail (2.1486) X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, Juanma Barranquero X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) Hello. 19 sep 2012 kl. 01:39 skrev Paul Eggert : > * Signals are always redirected to the main thread, resulting in > incorrect backtraces when, for example, a subsidiary thread has > a segmentation violation. Thread-specific signals like SIGSEGV > should have thread-specific backtraces. and + * atimer.c (deliver_alarm_signal): + Remove. No need to deliver this to the parent; any thread can + handle this signal now. All uses replaced by underlying = handler. and -static void -deliver_alarm_signal (int sig) -{ - handle_on_main_thread (sig, handle_alarm_signal); -} - - -/* Call alarm signal handler for pending timers. */ is totally wrong. Thread sarted by Gnome/gtk+ plugins can not handle = SIGALRM, so Emacs will terminate. This is the reason for this in the = first place. Don't install this and other stuff that removes redirecting = signals to the main thread. Jan D. From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 19 15:59:59 2012 Received: (at 12471) by debbugs.gnu.org; 19 Sep 2012 19:59:59 +0000 Received: from localhost ([127.0.0.1]:44012 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TEQRC-0000iP-TP for submit@debbugs.gnu.org; Wed, 19 Sep 2012 15:59:59 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:43176) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TEQRA-0000iH-4W for 12471@debbugs.gnu.org; Wed, 19 Sep 2012 15:59:57 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 706CA39E800D; Wed, 19 Sep 2012 12:58:28 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id P0PgY7VX+RxR; Wed, 19 Sep 2012 12:58:28 -0700 (PDT) Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id D1A5439E8007; Wed, 19 Sep 2012 12:58:27 -0700 (PDT) Message-ID: <505A23DF.3090301@cs.ucla.edu> Date: Wed, 19 Sep 2012 12:58:23 -0700 From: Paul Eggert User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120828 Thunderbird/15.0 MIME-Version: 1.0 To: =?ISO-8859-1?Q?Jan_Dj=E4rv?= Subject: Re: bug#12471: Avoid some signal-handling races, and simplify. References: <50590626.2070407@cs.ucla.edu> <357A45C4-8E4E-43AA-AF8B-BE2C5B056BA0@swipnet.se> In-Reply-To: <357A45C4-8E4E-43AA-AF8B-BE2C5B056BA0@swipnet.se> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.5 (--) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, Juanma Barranquero X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.5 (--) On 09/19/2012 09:45 AM, Jan Dj=E4rv wrote:> Hello. > Thread sarted by Gnome/gtk+ plugins can not handle SIGALRM, > so Emacs will terminate. Thanks for looking at the patch. Emacs doesn't terminate for me (Fedora 17, GTK3), but perhaps that's because the problem is specific to non-GNU/Linux platforms. So could you please explain the issue a bit more? Here are some more details to help explain that part of the proposed change. In the Emacs trunk, a thread started by those plugins can already get SIGALRM. If it does, the Emacs-supplied signal handler masks out SIGALRM in the thread, resignals the process with SIGALRM so that some other thread will get the signal next time, and then exits. The thread then resumes doing whatever it was doing, and the main thread eventually gets signaled by SIGALRM. So each Gnome/gtk+ plugin thread might get signaled by SIGALRM, altough it should handle that signal at most once. Under the patch, a thread may handle SIGALRM more than once. Each time it does so, it does something *very* simple (it sets pending_signals to 1). This shouldn't disturb what's happening in the plugin thread, since the plugin thread shouldn't be looking at pending_signals. I've looked at the existing code, and tracked it back to Emacs trunk bzr 58781 dated 2004-12-07, but couldn't find any discussion of what the exact problem was. Back then, alarm timers could run lots of fancy code so it made sense to insist that they run only in the main thread. But nowadays this should no longer be necessary. The patch could be altered so that it retains the signal-mask dance in the Gnome/gtk+ threads, but why bother? Fidding with signal masks in a signal handler is error-prone, because there are race conditions if the interrupted code is itself fiddling with signal masks. It's OK to do this with handlers of fatal signals, because the interrupted code won't be returned to, but for non-fatal signals like SIGALRM it's problematic, and it's better to avoid it if we don't need it. If the above explanation doesn't suffice, could you please give a recipe for reproducing the problem, or point me at a bug report? Thanks. From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 19 17:38:35 2012 Received: (at submit) by debbugs.gnu.org; 19 Sep 2012 21:38:36 +0000 Received: from localhost ([127.0.0.1]:44104 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TERyd-00031W-NT for submit@debbugs.gnu.org; Wed, 19 Sep 2012 17:38:35 -0400 Received: from eggs.gnu.org ([208.118.235.92]:38502) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TERyc-00031P-6V for submit@debbugs.gnu.org; Wed, 19 Sep 2012 17:38:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TERxB-0000J5-K9 for submit@debbugs.gnu.org; Wed, 19 Sep 2012 17:37:06 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:46374) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TERxB-0000J1-HN for submit@debbugs.gnu.org; Wed, 19 Sep 2012 17:37:05 -0400 Received: from eggs.gnu.org ([208.118.235.92]:53027) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TERx8-0007lV-Vy for bug-gnu-emacs@gnu.org; Wed, 19 Sep 2012 17:37:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TERx8-0000HM-2o for bug-gnu-emacs@gnu.org; Wed, 19 Sep 2012 17:37:02 -0400 Received: from plane.gmane.org ([80.91.229.3]:41070) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TERx7-0000H5-Sd for bug-gnu-emacs@gnu.org; Wed, 19 Sep 2012 17:37:02 -0400 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1TERx9-0000PO-6F for bug-gnu-emacs@gnu.org; Wed, 19 Sep 2012 23:37:03 +0200 Received: from 82-69-64-228.dsl.in-addr.zen.co.uk ([82.69.64.228]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 19 Sep 2012 23:37:03 +0200 Received: from andrewjmoreton by 82-69-64-228.dsl.in-addr.zen.co.uk with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 19 Sep 2012 23:37:03 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#12471: Avoid some signal-handling races, and simplify. Date: Wed, 19 Sep 2012 22:36:44 +0100 Lines: 15 Message-ID: <827grpg0er.fsf@gmail.com> References: <50590626.2070407@cs.ucla.edu> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: 82-69-64-228.dsl.in-addr.zen.co.uk User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2 (windows-nt) Cancel-Lock: sha1:1WelWRzV8UBQIQP85hL3E2pSeYM= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Spam-Score: -6.9 (------) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.9 (------) On Wed 19 Sep 2012, Paul Eggert wrote: > Attached is a patch to fix some of the problems that I found, and to > simplify nearby signal-handling code. I'd like to install this into > the trunk before it freezes. The patch is about 3300 lines so I've > taken the liberty of compressing it with gzip. I'm not qualified to comment on the subtleties of signal handling addressed by this patch, but it does seem that several issues have been conflated together. It would surely be easier to review and to bisect for bug hunting if it were split into several smaller patches. AndyM From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 20 02:09:08 2012 Received: (at submit) by debbugs.gnu.org; 20 Sep 2012 06:09:08 +0000 Received: from localhost ([127.0.0.1]:44434 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TEZwh-0007BD-VT for submit@debbugs.gnu.org; Thu, 20 Sep 2012 02:09:08 -0400 Received: from eggs.gnu.org ([208.118.235.92]:39774) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TEZwe-0007B4-EA for submit@debbugs.gnu.org; Thu, 20 Sep 2012 02:09:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TEZvA-0001m2-UL for submit@debbugs.gnu.org; Thu, 20 Sep 2012 02:07:34 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:54931) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TEZvA-0001lt-Ps for submit@debbugs.gnu.org; Thu, 20 Sep 2012 02:07:32 -0400 Received: from eggs.gnu.org ([208.118.235.92]:50812) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TEZv9-00084h-DE for bug-gnu-emacs@gnu.org; Thu, 20 Sep 2012 02:07:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TEZv7-0001kb-UE for bug-gnu-emacs@gnu.org; Thu, 20 Sep 2012 02:07:31 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:43178) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TEZv7-0001jv-6v; Thu, 20 Sep 2012 02:07:29 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 99B56A60001; Wed, 19 Sep 2012 23:07:20 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Av9hmDMu7+gp; Wed, 19 Sep 2012 23:07:19 -0700 (PDT) Received: from [192.168.1.3] (pool-108-23-119-2.lsanca.fios.verizon.net [108.23.119.2]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 54C8539E8007; Wed, 19 Sep 2012 23:07:19 -0700 (PDT) Message-ID: <505AB299.9090605@cs.ucla.edu> Date: Wed, 19 Sep 2012 23:07:21 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120827 Thunderbird/15.0 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: Avoid some signal-handling races, and simplify. References: <50590626.2070407@cs.ucla.edu> <83lig6yoim.fsf@gnu.org> In-Reply-To: <83lig6yoim.fsf@gnu.org> Content-Type: multipart/mixed; boundary="------------090609000209010301090505" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Debbugs-Envelope-To: submit Cc: lekktu@gmail.com, bug-gnu-emacs@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org This is a multi-part message in MIME format. --------------090609000209010301090505 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 09/19/2012 09:18 AM, Eli Zaretskii wrote: > Why is it a good idea to replace this macro with a function? The function makes it easier to control access to volatile variables, that is, to access them in a minimal number of times to lessen the number of race conditions. This requires a local variable. This can also be done with macros, but functions are nicer. An advantage of using a function, is that it shrinks the code size (Emacs's text size is about 1.3% smaller with the patch, not all due to this part of the change). > The macro is used quite frequently in the code; replacing > it with a function might slow down Emacs Thanks for mentioning that. I benchmarked the patch, and found out that one of my changes (to the QUIT macro) slowed things down significantly. I fixed that. The patched Emacs now runs slightly faster than the original on my benchmark. > A function whose name is in CAPS? Why? I was lazy and left the callers alone. That's easy to fix; revised patch attached. It renames BLOCK_INPUT_TO to block_input_to, etc. > - kill (getpid (), fatal_error_code); > + raise (fatal_error_code); > > If there are good reasons to prefer 'raise' to 'kill' in this context, On POSIX hosts, the change is helpful because it fixes some race conditions. raise (SIGABRT) is equivalent to pthread_kill (pthread_self (), SIGABRT), and we do want the signal to be delivered to the main thread rather than to some other thread (which 'kill' might do). > can we please special-case SIGABRT here and call 'emacs_abort' > directly, at least for hosts that cannot produce the backtrace? > Otherwise, assertion violations will not end up in 'emacs_abort', > AFAICS. Sorry, I'm not following. By "assertion violations" do you mean eassert failure? If so, currently: eassert fails. 'die' prints "Emacs fatal error" with some details. fatal_error_backtrace resets SIGABRT to SIG_DFL fatal_error_backtrace outputs a backtrace if available fatal_error_backtrace unblocks SIGABRT fatal_error_backtrace uses 'kill' with SIGABRT to terminate Emacs so emacs_abort is never called. Under the proposed patch, the actions do basically the same thing: eassert fails 'die' resets SIGABRT to SIG_DFL 'die' prints "Emacs fatal error" with some details. terminate_due_to_signal resets SIGABRT to SIG_DFL terminate_due_to_signal outputs a backtrace if available terminate_due_to_signal unblocks SIGABRT terminate_due_to_signal uses 'raise' with SIGABRT to terminate Emacs emacs_abort is not called in either the old code or the new. > - handle_on_main_thread (sig, handle_interrupt_signal); > + deliver_process_signal (sig, handle_interrupt_signal); > } > > Do we really need this double indirection? Yes, because Gnome/gtk+ threads shouldn't execute handle_interrupt_signal at the same time that the Emacs main thread is running. That signal handler doesn't do an atomic action, and if its actions are done in parallel with the Emacs main thread, bad things could happen. There's commentary to this effect in deliver_process_signal. > -#ifdef SIGTERM > parse_signal ("term", SIGTERM); > -#endif > > I don't understand why did you remove the conditional. This won't > compile if SIGTERM isn't defined. Emacs has been assuming C89 for a while, and C89 specifies SIGABRT, SIGFPE, SIGILL, SIGINT, SIGSEGV, SIGTERM. These days any C implementation that has should have these signals defined to something. > Why is IEEE_FLOATING_POINT, which detects the representation of FP > numbers, related to SIGFPE? Most hosts nowadays use IEEE floating point, so they do not trap on exceptions and don't need an exception handler. The exception handler is problematic (it longjmps out of a signal handler, which leads to some real problems) and should be omitted unless it's really needed. I'll add a comment along those lines. > - return ret; > + return nev; > > This should be in a separate commit, as it is unrelated. OK, thanks, I did that in trunk bzr 110104 and 110106. It still seems to me that the windows socket hook isn't returning the proper positive value when it should, but evidently the code's been working with it returning 0 so I'm not sure how high a priority it is to look into that. Thanks for the review. Revised patch (with above comments taken into account) attached. This patch is relative to trunk bzr 110110. --------------090609000209010301090505 Content-Type: application/x-gzip; name="syssignaq.txt.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="syssignaq.txt.gz" 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 --------------090609000209010301090505-- From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 20 02:28:41 2012 Received: (at 12471) by debbugs.gnu.org; 20 Sep 2012 06:28:41 +0000 Received: from localhost ([127.0.0.1]:44447 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TEaFc-0007bH-EE for submit@debbugs.gnu.org; Thu, 20 Sep 2012 02:28:40 -0400 Received: from mailout.attendit.se ([83.140.103.4]:58801) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TEaFZ-0007bA-Ua for 12471@debbugs.gnu.org; Thu, 20 Sep 2012 02:28:39 -0400 Received: from mail01.melmac.se (mail01.melmac.se [62.20.26.80]) by mailout.attendit.se (Postfix) with ESMTP id 03ED150147 for <12471@debbugs.gnu.org>; Thu, 20 Sep 2012 08:21:00 +0200 (CEST) Received: (qmail 5579 invoked by uid 89); 20 Sep 2012 06:26:40 -0000 Received: from h-46-59-42-18.na.cust.bahnhof.se (HELO coolsville.localdomain) (boel.djarv@bdtv.se@46.59.42.18) by mail01.melmac.se with ESMTPA; 20 Sep 2012 06:26:40 -0000 Received: from [172.20.199.13] (zeplin [172.20.199.13]) by coolsville.localdomain (Postfix) with ESMTPSA id 4310E7FA05E; Thu, 20 Sep 2012 08:27:07 +0200 (CEST) Content-Type: text/plain; charset=iso-8859-1 Mime-Version: 1.0 (Mac OS X Mail 6.0 \(1486\)) Subject: Re: bug#12471: Avoid some signal-handling races, and simplify. From: =?iso-8859-1?Q?Jan_Dj=E4rv?= In-Reply-To: <505A23DF.3090301@cs.ucla.edu> Date: Thu, 20 Sep 2012 08:27:09 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: <93EF5307-82D9-47A2-ADB2-2C103CD279DA@swipnet.se> References: <50590626.2070407@cs.ucla.edu> <357A45C4-8E4E-43AA-AF8B-BE2C5B056BA0@swipnet.se> <505A23DF.3090301@cs.ucla.edu> To: Paul Eggert X-Mailer: Apple Mail (2.1486) X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, Juanma Barranquero X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) 19 sep 2012 kl. 21:58 skrev Paul Eggert : > On 09/19/2012 09:45 AM, Jan Dj=E4rv wrote:> Hello. >=20 >> Thread sarted by Gnome/gtk+ plugins can not handle SIGALRM, >> so Emacs will terminate. >=20 > Thanks for looking at the patch. Emacs doesn't terminate for me > (Fedora 17, GTK3), but perhaps that's because the problem is > specific to non-GNU/Linux platforms. So could you please > explain the issue a bit more? I think this is the starting point: http://lists.gnu.org/archive/html/emacs-devel/2005-02/msg01142.html I found some other relevant threads that show how the code evolved: = http://lists.gnu.org/archive/html/emacs-pretest-bug/2006-08/msg00005.html http://lists.gnu.org/archive/html/emacs-devel/2006-08/msg00633.html http://lists.gnu.org/archive/html/bug-gnu-emacs/2007-06/msg00051.html Basically other threads are created by some libraries (DBus, Gtk+ file = dialog plugins). It is generally undefined to which thread a signal get delivered, and = some operations are only safe to do in the main thread (i.e. malloc). >=20 > Here are some more details to help explain that part of the > proposed change. In the Emacs trunk, a thread started by > those plugins can already get SIGALRM. If it does, the > Emacs-supplied signal handler masks out SIGALRM in the > thread, resignals the process with SIGALRM so that some other > thread will get the signal next time, and then exits. The > thread then resumes doing whatever it was doing, and the > main thread eventually gets signaled by SIGALRM. So each > Gnome/gtk+ plugin thread might get signaled by SIGALRM, > altough it should handle that signal at most once. >=20 > Under the patch, a thread may handle SIGALRM more than once. > Each time it does so, it does something *very* simple (it > sets pending_signals to 1). This shouldn't disturb what's > happening in the plugin thread, since the plugin thread > shouldn't be looking at pending_signals. Ok, I missed that part, if we only do simple stuff, it will be ok. But = previously a lot of stuff happend in the signal handler. If we can = remove those cases, all is well. Jan D. From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 20 13:46:15 2012 Received: (at 12471) by debbugs.gnu.org; 20 Sep 2012 17:46:15 +0000 Received: from localhost ([127.0.0.1]:45523 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TEkpL-00073I-3e for submit@debbugs.gnu.org; Thu, 20 Sep 2012 13:46:15 -0400 Received: from mtaout20.012.net.il ([80.179.55.166]:42745) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TEkpH-000738-AR for 12471@debbugs.gnu.org; Thu, 20 Sep 2012 13:46:13 -0400 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0MAN00K00T9VY300@a-mtaout20.012.net.il> for 12471@debbugs.gnu.org; Thu, 20 Sep 2012 20:44:37 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MAN00K1FTACWQ20@a-mtaout20.012.net.il>; Thu, 20 Sep 2012 20:44:37 +0300 (IDT) Date: Thu, 20 Sep 2012 20:44:51 +0300 From: Eli Zaretskii Subject: Re: Avoid some signal-handling races, and simplify. In-reply-to: <505AB299.9090605@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <837grozizw.fsf@gnu.org> References: <50590626.2070407@cs.ucla.edu> <83lig6yoim.fsf@gnu.org> <505AB299.9090605@cs.ucla.edu> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, lekktu@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Wed, 19 Sep 2012 23:07:21 -0700 > From: Paul Eggert > CC: bug-gnu-emacs@gnu.org, lekktu@gmail.com > > On 09/19/2012 09:18 AM, Eli Zaretskii wrote: > > > Why is it a good idea to replace this macro with a function? > > The function makes it easier to control access to volatile variables, > that is, to access them in a minimal number of times to lessen the > number of race conditions. This requires a local variable. I don't understand. The only volatile variable that is involved is interrupt_input_blocked, which is a global variable. How does a function help in this regard? > > - kill (getpid (), fatal_error_code); > > + raise (fatal_error_code); > > > > If there are good reasons to prefer 'raise' to 'kill' in this context, > > On POSIX hosts, the change is helpful because it fixes some > race conditions. raise (SIGABRT) is equivalent to > pthread_kill (pthread_self (), SIGABRT), and we do want the > signal to be delivered to the main thread rather than to > some other thread (which 'kill' might do). In that case, can we use 'pthread_kill' as you show above, instead of 'raise'? I'd like to avoid redefining 'raise' on Windows; see below. > > can we please special-case SIGABRT here and call 'emacs_abort' > > directly, at least for hosts that cannot produce the backtrace? > > Otherwise, assertion violations will not end up in 'emacs_abort', > > AFAICS. > > Sorry, I'm not following. By "assertion violations" do you > mean eassert failure? If so, currently: > > eassert fails. > 'die' prints "Emacs fatal error" with some details. > fatal_error_backtrace resets SIGABRT to SIG_DFL > fatal_error_backtrace outputs a backtrace if available > fatal_error_backtrace unblocks SIGABRT > fatal_error_backtrace uses 'kill' with SIGABRT to terminate Emacs > > so emacs_abort is never called. Under the proposed patch, the > actions do basically the same thing: > > eassert fails > 'die' resets SIGABRT to SIG_DFL > 'die' prints "Emacs fatal error" with some details. > terminate_due_to_signal resets SIGABRT to SIG_DFL > terminate_due_to_signal outputs a backtrace if available > terminate_due_to_signal unblocks SIGABRT > terminate_due_to_signal uses 'raise' with SIGABRT to terminate Emacs > > emacs_abort is not called in either the old code or the new. It does, on Windows. (I thought other platforms shared that, but perhaps I was wrong.) On Windows, 'kill' is redefined to call 'emacs_abort', when its first arg is Emacs's own PID and the second arg is SIGABRT. (Originally, 'die' called 'abort', which on Windows was redirected to 'w32_abort'. Then calls to 'abort' were changed to call 'emacs_abort', and then 'w32_abort' was renamed to 'emacs_abort'. But then, when you made 'die' call fatal_error_backtrace, that made Emacs on Windows exit silently upon assertion violations. So I changed 'sys_kill' to call 'emacs_abort' on Windows.) If you leave 'raise' there, it will invoke 'abort' from the system library on Windows, which is not what we want. And I don't want to redefine yet another library function, if it can be avoided. Incidentally, I think this feature of producing a backtrace on a fatal error will be hated by both users and Emacs maintainers, but that's another subject for another thread. > > - handle_on_main_thread (sig, handle_interrupt_signal); > > + deliver_process_signal (sig, handle_interrupt_signal); > > } > > > > Do we really need this double indirection? > > Yes, because Gnome/gtk+ threads shouldn't execute handle_interrupt_signal > at the same time that the Emacs main thread is running. That signal > handler doesn't do an atomic action, and if its actions are done in > parallel with the Emacs main thread, bad things could happen. > There's commentary to this effect in deliver_process_signal. We are miscommunicating. I meant why we need a bunch of functions, called deliver_FOO_signal, whose body is a single line that calls handle_on_main_thread (now deliver_process_signal, which is even a more confusing name, IMO -- the previous one at least hinted at what it did). Then handle_on_main_thread does some thread-related magic and/or calls the _real_ handler for the signal. Thus "double indirection": instead of calling the handler, we call a function that calls another function, which calls the real handler. (And btw, some of these handlers are also one-liners: they call fatal_error_backtrace, now renamed to terminate_due_to_signal, yet another function. Can you say "triple indirection"?) This makes the code hard to understand, especially since these functions are spread all over in several different source files. Can we do better than that? Ideally, there should be a single function, the signal handler, which does everything. Then a given signal will have just two places to look up: the place where you call sigaction to set up the handler, and another one where the handler is implemented. As for the FORWARD_SIGNAL_TO_MAIN_THREAD stuff, you could make each signal handler invoke a function that does just this part. Or maybe it would work to set up things so that no non-main threads ever get any signals -- is there some pthread_* function that can setup a callback to run each time a thread is created? if so, perhaps we could use such a callback to block signals in each thread. If any of that can be done, I think the signal-related code will really become much easier to study, understand, and maintain. > > Why is IEEE_FLOATING_POINT, which detects the representation of FP > > numbers, related to SIGFPE? > > Most hosts nowadays use IEEE floating point, so they do not trap on > exceptions and don't need an exception handler. Well, SIGFPE could happen for reasons entirely unrelated to math calculations and functions. A hardware problem, for example. > The exception handler is problematic (it longjmps out of a signal > handler, which leads to some real problems) and should be omitted > unless it's really needed. Given that SIGFPE will not happen due to calculations, how about changing its handler to call fatal_error_backtrace, rather than signal a Lisp-level error? From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 21 03:44:41 2012 Received: (at 12471) by debbugs.gnu.org; 21 Sep 2012 07:44:41 +0000 Received: from localhost ([127.0.0.1]:46078 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TExuj-0001NB-1a for submit@debbugs.gnu.org; Fri, 21 Sep 2012 03:44:41 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:42202) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TExuf-0001N3-PG for 12471@debbugs.gnu.org; Fri, 21 Sep 2012 03:44:39 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 6C9D639E8013; Fri, 21 Sep 2012 00:43:01 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id gTD5N1OvLW3n; Fri, 21 Sep 2012 00:43:00 -0700 (PDT) Received: from [192.168.1.3] (pool-108-23-119-2.lsanca.fios.verizon.net [108.23.119.2]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id A6BA639E800D; Fri, 21 Sep 2012 00:43:00 -0700 (PDT) Message-ID: <505C1A75.9030509@cs.ucla.edu> Date: Fri, 21 Sep 2012 00:42:45 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120827 Thunderbird/15.0 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: Avoid some signal-handling races, and simplify. References: <50590626.2070407@cs.ucla.edu> <83lig6yoim.fsf@gnu.org> <505AB299.9090605@cs.ucla.edu> <837grozizw.fsf@gnu.org> In-Reply-To: <837grozizw.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -2.4 (--) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, lekktu@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.4 (--) On 09/20/2012 10:44 AM, Eli Zaretskii wrote: > The only volatile variable that is involved is > interrupt_input_blocked, which is a global variable. How does a > function help in this regard? UNBLOCK_INPUT (the macro in the current trunk) accesses that variable four times in the usual case. unblock_input (the function in the proposed patch) accesses it just twice. This lessens the number of race conditions and makes the code run a bit faster. (It doesn't eliminate the races, but that's OK, one bug fix at a time.) unblock_input does fewer accesses by using a local variable 'level'. Local variables like that are cleaner when they're in functions. One can put them into macros too, but then one has the problem of capture. It's a relatively minor thing; it could still be done with a macro. But since the whole thing basically needed to be rewritten anyway, I figured we might as well do it more cleanly, with a fucntion. > can we use 'pthread_kill' as you show above, instead of 'raise'? That would not work on older POSIXish hosts that lack pthread_kill. In contrast, 'raise' should be portable to all C89-or-better hosts. > On Windows, 'kill' is redefined to call 'emacs_abort', when its > first arg is Emacs's own PID and the second arg is SIGABRT. For consistency, how about if Windows also defines 'raise' to call 'emacs_abort', when the signal is SIGABRT? That should fix the problem, and it shouldn't require any change to the mainline code. It could be something as simple as this in a Windows-specific include file, perhaps: #define raise(sig) kill (getpid (), sig) > And I don't want to redefine yet another library function, if it can > be avoided. But it does seem the simpler approach here, overall. > I think this feature of producing a backtrace on a fatal > error will be hated by both users and Emacs maintainers, > but that's another subject for another thread. > Can we do better than that? Ideally, there should be a single > function, the signal handler, which does everything. I tried that initially but the code was bulkier and more error-prone. Each handler needed to have an extra local variable (to save errno) and to call two auxiliary-library functions, one for setup and the other for teardown. In contrast, the proposed approach requires no additional locals and one auxiliary-library function. It's true that it requires two functions for each per-process signal, one for the thread catching the signal and one for the main process, but I find that actually simpler, since it makes it clearer which handler code is run where. Anyway, pointers to signal handlers are standard practice in POSIXish code, and it's not particularly exotic to pass such a pointer around or to call the handler via the pointer. > Or maybe it would work to set up things so that no non-main threads > ever get any signals Yes, that was my first thought too! I'd rather do that; it'd be simpler. > is there some pthread_* function that can > setup a callback to run each time a thread is created? Unfortunately not, which is why I settled with the proposed approach > Given that SIGFPE will not happen due to calculations, how about > changing its handler to call fatal_error_backtrace, rather than signal > a Lisp-level error? Yes, that makes sense, and it's what the proposed patch already does on IEEE hosts. But I see that the code isn't very clear about that. I'll replace it with the following, which I hope makes it clearer. /* Typically SIGFPE is thread-specific and is fatal, like SIGILL. But on a non-IEEE host SIGFPE can come from a trap in the Lisp interpreter's floating point operations, so treat SIGFPE as an arith-error if it arises in the main thread. */ if (IEEE_FLOATING_POINT) sigaction (SIGFPE, &thread_fatal_action, 0); else { emacs_sigaction_init (&action, deliver_arith_signal); sigaction (SIGFPE, &action, 0); } From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 21 04:33:05 2012 Received: (at 12471) by debbugs.gnu.org; 21 Sep 2012 08:33:06 +0000 Received: from localhost ([127.0.0.1]:46152 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TEyfZ-0002Td-GR for submit@debbugs.gnu.org; Fri, 21 Sep 2012 04:33:05 -0400 Received: from mtaout21.012.net.il ([80.179.55.169]:64859) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TEyfX-0002TU-BQ for 12471@debbugs.gnu.org; Fri, 21 Sep 2012 04:33:04 -0400 Received: from conversion-daemon.a-mtaout21.012.net.il by a-mtaout21.012.net.il (HyperSendmail v2007.08) id <0MAO00700Y744Z00@a-mtaout21.012.net.il> for 12471@debbugs.gnu.org; Fri, 21 Sep 2012 11:31:19 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout21.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MAO007WBYBX0T30@a-mtaout21.012.net.il>; Fri, 21 Sep 2012 11:31:09 +0300 (IDT) Date: Fri, 21 Sep 2012 11:31:25 +0300 From: Eli Zaretskii Subject: Re: Avoid some signal-handling races, and simplify. In-reply-to: <505C1A75.9030509@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <83mx0jydya.fsf@gnu.org> References: <50590626.2070407@cs.ucla.edu> <83lig6yoim.fsf@gnu.org> <505AB299.9090605@cs.ucla.edu> <837grozizw.fsf@gnu.org> <505C1A75.9030509@cs.ucla.edu> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, lekktu@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Fri, 21 Sep 2012 00:42:45 -0700 > From: Paul Eggert > CC: 12471@debbugs.gnu.org, lekktu@gmail.com > > > On Windows, 'kill' is redefined to call 'emacs_abort', when its > > first arg is Emacs's own PID and the second arg is SIGABRT. > > For consistency, how about if Windows also defines 'raise' to call > 'emacs_abort', when the signal is SIGABRT? That should fix the > problem, and it shouldn't require any change to the mainline code. It > could be something as simple as this in a Windows-specific include > file, perhaps: > > #define raise(sig) kill (getpid (), sig) I don't want to do that. I guess I'd special-case WINDOWSNT then, if we cannot do better. > > Can we do better than that? Ideally, there should be a single > > function, the signal handler, which does everything. > > I tried that initially but the code was bulkier and more error-prone. > Each handler needed to have an extra local variable (to save errno) > and to call two auxiliary-library functions, one for setup and the > other for teardown. In contrast, the proposed approach requires no > additional locals and one auxiliary-library function. It's true that > it requires two functions for each per-process signal, one for the > thread catching the signal and one for the main process, but I find > that actually simpler, since it makes it clearer which handler code is > run where. To me, the code looks overly complicated. By the time you get to the meat, you have already done 2 or 3 hops, which makes tracing processing of a specific signal unduly complex. From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 21 13:28:41 2012 Received: (at 12471) by debbugs.gnu.org; 21 Sep 2012 17:28:41 +0000 Received: from localhost ([127.0.0.1]:47346 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TF71t-00079X-M8 for submit@debbugs.gnu.org; Fri, 21 Sep 2012 13:28:41 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:36229) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TF71r-00079P-Ie for 12471@debbugs.gnu.org; Fri, 21 Sep 2012 13:28:40 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 6E65E39E8013; Fri, 21 Sep 2012 10:27:00 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id cXatahbe8p7K; Fri, 21 Sep 2012 10:27:00 -0700 (PDT) Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 056F639E800D; Fri, 21 Sep 2012 10:27:00 -0700 (PDT) Message-ID: <505CA363.1000603@cs.ucla.edu> Date: Fri, 21 Sep 2012 10:26:59 -0700 From: Paul Eggert User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120828 Thunderbird/15.0 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: Avoid some signal-handling races, and simplify. References: <50590626.2070407@cs.ucla.edu> <83lig6yoim.fsf@gnu.org> <505AB299.9090605@cs.ucla.edu> <837grozizw.fsf@gnu.org> <505C1A75.9030509@cs.ucla.edu> <83mx0jydya.fsf@gnu.org> In-Reply-To: <83mx0jydya.fsf@gnu.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Spam-Score: -2.4 (--) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, lekktu@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.4 (--) On 09/21/2012 01:31 AM, Eli Zaretskii wrote: >> #define raise(sig) kill (getpid (), sig) > I don't want to do that. I guess I'd special-case WINDOWSNT then, if > we cannot do better. If the special case is in a w32 or dos file or somewhere in the nt directory, that's obviously fine. I hope any such special case doesn't clutter the mainline code, though, as it's Windows-specific. > To me, the code looks overly complicated. I'd also like a simpler way to do it. But so far this is the simplest code we've found, that avoids the bugs in question. And it's not *that* bad. (Though perhaps my standards are too high -- I've been reading the garbage collector....) From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 21 13:40:38 2012 Received: (at 12471) by debbugs.gnu.org; 21 Sep 2012 17:40:39 +0000 Received: from localhost ([127.0.0.1]:47351 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TF7DS-0007QE-OD for submit@debbugs.gnu.org; Fri, 21 Sep 2012 13:40:38 -0400 Received: from mtaout23.012.net.il ([80.179.55.175]:61256) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TF7DQ-0007Q6-8n for 12471@debbugs.gnu.org; Fri, 21 Sep 2012 13:40:37 -0400 Received: from conversion-daemon.a-mtaout23.012.net.il by a-mtaout23.012.net.il (HyperSendmail v2007.08) id <0MAP00C00NOBUL00@a-mtaout23.012.net.il> for 12471@debbugs.gnu.org; Fri, 21 Sep 2012 20:38:57 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout23.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MAP00CT5NOWQW30@a-mtaout23.012.net.il>; Fri, 21 Sep 2012 20:38:57 +0300 (IDT) Date: Fri, 21 Sep 2012 20:38:56 +0300 From: Eli Zaretskii Subject: Re: Avoid some signal-handling races, and simplify. In-reply-to: <505CA363.1000603@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <836277xolr.fsf@gnu.org> References: <50590626.2070407@cs.ucla.edu> <83lig6yoim.fsf@gnu.org> <505AB299.9090605@cs.ucla.edu> <837grozizw.fsf@gnu.org> <505C1A75.9030509@cs.ucla.edu> <83mx0jydya.fsf@gnu.org> <505CA363.1000603@cs.ucla.edu> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, lekktu@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Fri, 21 Sep 2012 10:26:59 -0700 > From: Paul Eggert > CC: 12471@debbugs.gnu.org, lekktu@gmail.com > > On 09/21/2012 01:31 AM, Eli Zaretskii wrote: > >> #define raise(sig) kill (getpid (), sig) > > I don't want to do that. I guess I'd special-case WINDOWSNT then, if > > we cannot do better. > > If the special case is in a w32 or dos file or somewhere in the nt > directory, that's obviously fine. I hope any such special case > doesn't clutter the mainline code, though, as it's Windows-specific. I see no way to do that in any place but where 'raise' is called, sorry. That's why I asked if there was a way to do that without calling 'raise'. From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 21 14:15:32 2012 Received: (at 12471) by debbugs.gnu.org; 21 Sep 2012 18:15:32 +0000 Received: from localhost ([127.0.0.1]:47379 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TF7lD-0008DM-7Q for submit@debbugs.gnu.org; Fri, 21 Sep 2012 14:15:32 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:38977) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TF7l9-0008DC-FN for 12471@debbugs.gnu.org; Fri, 21 Sep 2012 14:15:29 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id A8C7439E8013; Fri, 21 Sep 2012 11:13:48 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FZ++VIc-Y9ER; Fri, 21 Sep 2012 11:13:47 -0700 (PDT) Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id DF62F39E800D; Fri, 21 Sep 2012 11:13:47 -0700 (PDT) Message-ID: <505CAE5B.8060802@cs.ucla.edu> Date: Fri, 21 Sep 2012 11:13:47 -0700 From: Paul Eggert User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120828 Thunderbird/15.0 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: Avoid some signal-handling races, and simplify. References: <50590626.2070407@cs.ucla.edu> <83lig6yoim.fsf@gnu.org> <505AB299.9090605@cs.ucla.edu> <837grozizw.fsf@gnu.org> <505C1A75.9030509@cs.ucla.edu> <83mx0jydya.fsf@gnu.org> <505CA363.1000603@cs.ucla.edu> <836277xolr.fsf@gnu.org> In-Reply-To: <836277xolr.fsf@gnu.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Spam-Score: -2.4 (--) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, lekktu@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.4 (--) On 09/21/2012 10:38 AM, Eli Zaretskii wrote: > I see no way to do that in any place but where 'raise' is called, > sorry. Well I'm no Windows expert, but if I understand things correctly, the following should do the trick, since it uses the same pattern that the Windows code already uses for 'kill', 'signal', and 'sigaction'. This approach should avoid the macro problems that my earlier suggestion had. === modified file 'nt/ChangeLog' --- nt/ChangeLog 2012-09-18 10:49:33 +0000 +++ nt/ChangeLog 2012-09-21 18:10:25 +0000 @@ -1,3 +1,7 @@ +2012-09-21 Paul Eggert + + * inc/ms-w32.h (raise): New macro. + 2012-09-18 Eli Zaretskii * configure.bat: Include stddef.h before gif_lib.h, to have size_t === modified file 'nt/inc/ms-w32.h' --- nt/inc/ms-w32.h 2012-09-07 08:20:07 +0000 +++ nt/inc/ms-w32.h 2012-09-21 18:10:25 +0000 @@ -200,6 +200,7 @@ /* Subprocess calls that are emulated. */ #define spawnve sys_spawnve #define wait sys_wait +#define raise sys_raise #define kill sys_kill #define signal sys_signal === modified file 'src/ChangeLog' --- src/ChangeLog 2012-09-21 07:21:06 +0000 +++ src/ChangeLog 2012-09-21 18:10:25 +0000 @@ -124,6 +124,7 @@ (emacs_backtrace): Output backtrace for the appropriate thread, which is not necessarily the main thread. * syssignal.h: Include . + * w32proc.c (sys_raise): New function. * xterm.c (x_connection_signal): Remove; no longer needed now that we use sigaction. (x_connection_closed): No need to mess with sigmask now. === modified file 'src/w32proc.c' --- src/w32proc.c 2012-09-15 08:03:11 +0000 +++ src/w32proc.c 2012-09-21 18:10:25 +0000 @@ -1421,6 +1421,12 @@ } int +sys_raise (int sig) +{ + sys_kill (getpid (), sig); +} + +int sys_kill (int pid, int sig) { child_process *cp; From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 21 14:29:12 2012 Received: (at 12471) by debbugs.gnu.org; 21 Sep 2012 18:29:12 +0000 Received: from localhost ([127.0.0.1]:47389 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TF7yR-00005U-QA for submit@debbugs.gnu.org; Fri, 21 Sep 2012 14:29:12 -0400 Received: from mtaout22.012.net.il ([80.179.55.172]:39310) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TF7yP-00005M-08 for 12471@debbugs.gnu.org; Fri, 21 Sep 2012 14:29:10 -0400 Received: from conversion-daemon.a-mtaout22.012.net.il by a-mtaout22.012.net.il (HyperSendmail v2007.08) id <0MAP00K00PUH8B00@a-mtaout22.012.net.il> for 12471@debbugs.gnu.org; Fri, 21 Sep 2012 21:27:29 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout22.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MAP00J4BPXTMQC0@a-mtaout22.012.net.il>; Fri, 21 Sep 2012 21:27:29 +0300 (IDT) Date: Fri, 21 Sep 2012 21:27:28 +0300 From: Eli Zaretskii Subject: Re: Avoid some signal-handling races, and simplify. In-reply-to: <505CAE5B.8060802@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <83zk4jw7sf.fsf@gnu.org> References: <50590626.2070407@cs.ucla.edu> <83lig6yoim.fsf@gnu.org> <505AB299.9090605@cs.ucla.edu> <837grozizw.fsf@gnu.org> <505C1A75.9030509@cs.ucla.edu> <83mx0jydya.fsf@gnu.org> <505CA363.1000603@cs.ucla.edu> <836277xolr.fsf@gnu.org> <505CAE5B.8060802@cs.ucla.edu> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, lekktu@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Fri, 21 Sep 2012 11:13:47 -0700 > From: Paul Eggert > CC: 12471@debbugs.gnu.org, lekktu@gmail.com > > +#define raise sys_raise I already told that I don't want to do that. Shadowing library functions is a maintenance burden in the long run. From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 21 16:00:49 2012 Received: (at 12471) by debbugs.gnu.org; 21 Sep 2012 20:00:49 +0000 Received: from localhost ([127.0.0.1]:47523 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TF9P6-0002Ei-Kz for submit@debbugs.gnu.org; Fri, 21 Sep 2012 16:00:49 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:45261) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TF9P5-0002Ec-6S for 12471@debbugs.gnu.org; Fri, 21 Sep 2012 16:00:47 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 4855039E8014; Fri, 21 Sep 2012 12:59:08 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jl2l7IzlbsRv; Fri, 21 Sep 2012 12:59:07 -0700 (PDT) Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id D369039E800D; Fri, 21 Sep 2012 12:59:07 -0700 (PDT) Message-ID: <505CC70B.6050308@cs.ucla.edu> Date: Fri, 21 Sep 2012 12:59:07 -0700 From: Paul Eggert User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120828 Thunderbird/15.0 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: Avoid some signal-handling races, and simplify. References: <50590626.2070407@cs.ucla.edu> <83lig6yoim.fsf@gnu.org> <505AB299.9090605@cs.ucla.edu> <837grozizw.fsf@gnu.org> <505C1A75.9030509@cs.ucla.edu> <83mx0jydya.fsf@gnu.org> <505CA363.1000603@cs.ucla.edu> <836277xolr.fsf@gnu.org> <505CAE5B.8060802@cs.ucla.edu> <83zk4jw7sf.fsf@gnu.org> In-Reply-To: <83zk4jw7sf.fsf@gnu.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Spam-Score: -2.4 (--) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, lekktu@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.4 (--) On 09/21/2012 11:27 AM, Eli Zaretskii wrote:>> +#define raise sys_raise > I already told that I don't want to do that. Yes, but the most-recent patch did something else than what you had objected to, and should avoid its problems. > Shadowing library functions is a maintenance burden in the long run. It's a maintenance burden no matter how we do it. When it's easy, as is the case here, it's better to address Windows-specific problems in the Windows code. This relieves the mainline maintainers of the maintenance burden of reading Windows code, and that is a win. Besides, this particular patch has almost no burden on the Windows side. We're talking about six simple lines that fit nicely into an already-existing framework for this sort of thing. From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 22 04:04:23 2012 Received: (at 12471) by debbugs.gnu.org; 22 Sep 2012 08:04:23 +0000 Received: from localhost ([127.0.0.1]:47942 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFKhH-0003DS-I6 for submit@debbugs.gnu.org; Sat, 22 Sep 2012 04:04:23 -0400 Received: from mtaout23.012.net.il ([80.179.55.175]:65471) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFKhB-0003DF-13 for 12471@debbugs.gnu.org; Sat, 22 Sep 2012 04:04:17 -0400 Received: from conversion-daemon.a-mtaout23.012.net.il by a-mtaout23.012.net.il (HyperSendmail v2007.08) id <0MAQ00G00RCRA400@a-mtaout23.012.net.il> for 12471@debbugs.gnu.org; Sat, 22 Sep 2012 11:02:30 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout23.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MAQ00G8JRO516C0@a-mtaout23.012.net.il>; Sat, 22 Sep 2012 11:02:30 +0300 (IDT) Date: Sat, 22 Sep 2012 11:02:18 +0300 From: Eli Zaretskii Subject: Re: Avoid some signal-handling races, and simplify. In-reply-to: <505CC70B.6050308@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <83obkywkmt.fsf@gnu.org> References: <50590626.2070407@cs.ucla.edu> <83lig6yoim.fsf@gnu.org> <505AB299.9090605@cs.ucla.edu> <837grozizw.fsf@gnu.org> <505C1A75.9030509@cs.ucla.edu> <83mx0jydya.fsf@gnu.org> <505CA363.1000603@cs.ucla.edu> <836277xolr.fsf@gnu.org> <505CAE5B.8060802@cs.ucla.edu> <83zk4jw7sf.fsf@gnu.org> <505CC70B.6050308@cs.ucla.edu> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, lekktu@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Fri, 21 Sep 2012 12:59:07 -0700 > From: Paul Eggert > CC: 12471@debbugs.gnu.org, lekktu@gmail.com > > On 09/21/2012 11:27 AM, Eli Zaretskii wrote:>> +#define raise sys_raise > > I already told that I don't want to do that. > > Yes, but the most-recent patch did something else than what you had > objected to, and should avoid its problems. What I object to is replacing existing library functions when that can be avoided. If the most-recent patch allows avoiding that, please tell how and where. > > Shadowing library functions is a maintenance burden in the long run. > > It's a maintenance burden no matter how we do it. I will always prefer a small burden to a larger one. > When it's easy, as is the case here, it's better to address > Windows-specific problems in the Windows code. This relieves the > mainline maintainers of the maintenance burden of reading Windows > code, and that is a win. It's a win for you, but it isn't a win in general. And anyway, I don't understand why you take the liberty of removing me and Juanma from the list of "mainline maintainers". May I suggest that you review the commit logs and look up our names? On my part, I can tell that there would have been a few more entries there, if it were not for the constant flux of low-level changes lately that need constant attention to keep the Windows port in working condition. How do you enter that into the "win" equation? > Besides, this particular patch has almost no burden on the Windows > side. We're talking about six simple lines that fit nicely into an > already-existing framework for this sort of thing. No, it does not fit in the existing framework. The existing framework is to replace library functions and APIs that do not exist on Windows, or are severely limited compared to the expectations of the Emacs application code. This isn't the case here: 'raise' has no known problems on Windows, when called with signals it supports (SIGABRT is one of them). Please note that 'sys_kill' was written to emulate delivery of fatal signals to Emacs subprocesses, not to the Emacs process. Adding the two lines there to support aborting Emacs was already too far-fetched; I did that as a temporary measure of getting a sane behavior while waiting for the dust to settle -- as I was certain (and now proved right) that the changes done then are not the last word on this. What you suggest now is that I add to 'sys_kill' a lot of stuff for it to be able to replace 'raise', and then maintain that stuff for whatever changes will be done (and I'm sure they will) in this area, because a replacement of a library function needs to be at least as good as the function it replaces. _That_ is the maintenance burden I want to avoid. If you can compare it with a couple of #ifdef's and still claim with a straight face that it's a lesser evil, then we will just have to agree to disagree. From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 22 04:49:33 2012 Received: (at 12471) by debbugs.gnu.org; 22 Sep 2012 08:49:33 +0000 Received: from localhost ([127.0.0.1]:48023 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFLP2-0004Gj-AV for submit@debbugs.gnu.org; Sat, 22 Sep 2012 04:49:33 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:44271) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFLOx-0004Ga-NR for 12471@debbugs.gnu.org; Sat, 22 Sep 2012 04:49:28 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id A64A639E800D; Sat, 22 Sep 2012 01:47:45 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id RO67Ry9Rtg+C; Sat, 22 Sep 2012 01:47:45 -0700 (PDT) Received: from [192.168.1.3] (pool-108-23-119-2.lsanca.fios.verizon.net [108.23.119.2]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 3FB6039E8008; Sat, 22 Sep 2012 01:47:45 -0700 (PDT) Message-ID: <505D7B33.4000504@cs.ucla.edu> Date: Sat, 22 Sep 2012 01:47:47 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120827 Thunderbird/15.0 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: Avoid some signal-handling races, and simplify. References: <50590626.2070407@cs.ucla.edu> <83lig6yoim.fsf@gnu.org> <505AB299.9090605@cs.ucla.edu> <837grozizw.fsf@gnu.org> <505C1A75.9030509@cs.ucla.edu> <83mx0jydya.fsf@gnu.org> <505CA363.1000603@cs.ucla.edu> <836277xolr.fsf@gnu.org> <505CAE5B.8060802@cs.ucla.edu> <83zk4jw7sf.fsf@gnu.org> <505CC70B.6050308@cs.ucla.edu> <83obkywkmt.fsf@gnu.org> In-Reply-To: <83obkywkmt.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -2.4 (--) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, lekktu@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.4 (--) On 09/22/2012 01:02 AM, Eli Zaretskii wrote: > What you suggest now is that I add to 'sys_kill' a lot of stuff for it to > be able to replace 'raise' Sorry, I don't follow. I did not suggest that, at any rate. Currently, emacs.c does the equivalent of this: kill (getpid (), sig); which on Windows is macro-expanded to sys_kill (_getpid (), sig); The proposed patch causes Emacs to do the same Windows actions via the redefined 'raise'. That is, emacs.c will do 'raise (sig)', and the implementation of 'raise (sig)' will do 'sys_kill (_getpid (), sig)'. If there is a problem with the proposed patch with respect to Emacs sending a signal to itself, why doesn't the current Emacs trunk have the same problem? And if so, shouldn't that problem be addressed independently, regardless of the patch proposed for Bug#12471? > I will always prefer a small burden to a larger one. I was referring to the overall burden, for all maintainers, not just the burden for the Windows maintainers in particular. From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 22 05:12:09 2012 Received: (at 12471) by debbugs.gnu.org; 22 Sep 2012 09:12:09 +0000 Received: from localhost ([127.0.0.1]:48049 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFLkq-0004la-FP for submit@debbugs.gnu.org; Sat, 22 Sep 2012 05:12:08 -0400 Received: from mtaout22.012.net.il ([80.179.55.172]:63547) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFLkk-0004l8-J9 for 12471@debbugs.gnu.org; Sat, 22 Sep 2012 05:12:03 -0400 Received: from conversion-daemon.a-mtaout22.012.net.il by a-mtaout22.012.net.il (HyperSendmail v2007.08) id <0MAQ00400UQ0NG00@a-mtaout22.012.net.il> for 12471@debbugs.gnu.org; Sat, 22 Sep 2012 12:10:16 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout22.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MAQ00437UT3KS30@a-mtaout22.012.net.il>; Sat, 22 Sep 2012 12:10:16 +0300 (IDT) Date: Sat, 22 Sep 2012 12:10:04 +0300 From: Eli Zaretskii Subject: Re: Avoid some signal-handling races, and simplify. In-reply-to: <505D7B33.4000504@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <83haqqwhhv.fsf@gnu.org> References: <50590626.2070407@cs.ucla.edu> <83lig6yoim.fsf@gnu.org> <505AB299.9090605@cs.ucla.edu> <837grozizw.fsf@gnu.org> <505C1A75.9030509@cs.ucla.edu> <83mx0jydya.fsf@gnu.org> <505CA363.1000603@cs.ucla.edu> <836277xolr.fsf@gnu.org> <505CAE5B.8060802@cs.ucla.edu> <83zk4jw7sf.fsf@gnu.org> <505CC70B.6050308@cs.ucla.edu> <83obkywkmt.fsf@gnu.org> <505D7B33.4000504@cs.ucla.edu> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, lekktu@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Sat, 22 Sep 2012 01:47:47 -0700 > From: Paul Eggert > CC: 12471@debbugs.gnu.org, lekktu@gmail.com > > On 09/22/2012 01:02 AM, Eli Zaretskii wrote: > > > What you suggest now is that I add to 'sys_kill' a lot of stuff for it to > > be able to replace 'raise' > > Sorry, I don't follow. I did not suggest that, at any rate. > > Currently, emacs.c does the equivalent of this: > > kill (getpid (), sig); > > which on Windows is macro-expanded to > > sys_kill (_getpid (), sig); > > The proposed patch causes Emacs to do the > same Windows actions via the redefined 'raise'. That is, > emacs.c will do 'raise (sig)', and the implementation > of 'raise (sig)' will do 'sys_kill (_getpid (), sig)'. Which means 'sys_kill' will need to do everything that's expected from 'raise'. Like I wrote: > because a replacement of a library function needs to be at least as > good as the function it replaces. > If there is a problem with the proposed patch with respect > to Emacs sending a signal to itself, why doesn't the > current Emacs trunk have the same problem? I already explained that, too: > Please note that 'sys_kill' was written to emulate delivery of fatal > signals to Emacs subprocesses, not to the Emacs process. Adding the > two lines there to support aborting Emacs was already too far-fetched; > I did that as a temporary measure of getting a sane behavior while > waiting for the dust to settle -- as I was certain (and now proved > right) that the changes done then are not the last word on this. > And if so, shouldn't that problem be addressed independently, > regardless of the patch proposed for Bug#12471? It will be, once the dust settles on this (or we enter the feature freeze, whichever comes first). I was asking not to aggravate the situation, if it's possible. > > I will always prefer a small burden to a larger one. > > I was referring to the overall burden, for all maintainers, > not just the burden for the Windows maintainers in particular. So was I. From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 22 05:42:25 2012 Received: (at 12471) by debbugs.gnu.org; 22 Sep 2012 09:42:25 +0000 Received: from localhost ([127.0.0.1]:48060 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFMEC-0005QL-Hb for submit@debbugs.gnu.org; Sat, 22 Sep 2012 05:42:25 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:45493) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFME9-0005QC-IK for 12471@debbugs.gnu.org; Sat, 22 Sep 2012 05:42:22 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 613EC39E800D; Sat, 22 Sep 2012 02:40:39 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id gET0F26x0950; Sat, 22 Sep 2012 02:40:39 -0700 (PDT) Received: from [192.168.1.3] (pool-108-23-119-2.lsanca.fios.verizon.net [108.23.119.2]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id E3B1339E8008; Sat, 22 Sep 2012 02:40:38 -0700 (PDT) Message-ID: <505D8799.8030905@cs.ucla.edu> Date: Sat, 22 Sep 2012 02:40:41 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120827 Thunderbird/15.0 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: Avoid some signal-handling races, and simplify. References: <50590626.2070407@cs.ucla.edu> <83lig6yoim.fsf@gnu.org> <505AB299.9090605@cs.ucla.edu> <837grozizw.fsf@gnu.org> <505C1A75.9030509@cs.ucla.edu> <83mx0jydya.fsf@gnu.org> <505CA363.1000603@cs.ucla.edu> <836277xolr.fsf@gnu.org> <505CAE5B.8060802@cs.ucla.edu> <83zk4jw7sf.fsf@gnu.org> <505CC70B.6050308@cs.ucla.edu> <83obkywkmt.fsf@gnu.org> <505D7B33.4000504@cs.ucla.edu> <83haqqwhhv.fsf@gnu.org> In-Reply-To: <83haqqwhhv.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -2.4 (--) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, lekktu@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.4 (--) On 09/22/2012 02:10 AM, Eli Zaretskii wrote: > Which means 'sys_kill' will need to do everything that's expected from > 'raise'. Unless I'm missing something, the only thing that Emacs will expect from 'raise' is that it act like 'sys_kill' on itself, so the proposed patch shouldn't affect what 'sys_kill' needs to do. > I was asking not to aggravate the situation, if it's possible. Yes, but I don't see how the proposed patch aggravates the situation. It causes Emacs to execute the same Windows primitives as before. These primitives may have problems, but those problems are the same problems as before. I'm perhaps stating the obvious here, but just in case I'm misunderstanding please bear with me: the Windows substitutes for kill, raise, etc. need not support every POSIX feature. They need to support only the features that Emacs uses. So sys_raise need not support every feature that POSIX requires for 'raise'; it needs to support only the 'raise' features that Emacs uses. Likewise for 'sys_kill' versus POSIX 'kill'. From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 22 06:10:37 2012 Received: (at 12471) by debbugs.gnu.org; 22 Sep 2012 10:10:37 +0000 Received: from localhost ([127.0.0.1]:48078 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFMfU-000629-U8 for submit@debbugs.gnu.org; Sat, 22 Sep 2012 06:10:37 -0400 Received: from mtaout20.012.net.il ([80.179.55.166]:53745) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFMfR-000621-SE for 12471@debbugs.gnu.org; Sat, 22 Sep 2012 06:10:35 -0400 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0MAQ00I00WY2ZB00@a-mtaout20.012.net.il> for 12471@debbugs.gnu.org; Sat, 22 Sep 2012 13:08:04 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MAQ00IJAXHFGNC0@a-mtaout20.012.net.il>; Sat, 22 Sep 2012 13:08:04 +0300 (IDT) Date: Sat, 22 Sep 2012 13:07:52 +0300 From: Eli Zaretskii Subject: Re: Avoid some signal-handling races, and simplify. In-reply-to: <505D8799.8030905@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <83mx0il69z.fsf@gnu.org> References: <50590626.2070407@cs.ucla.edu> <83lig6yoim.fsf@gnu.org> <505AB299.9090605@cs.ucla.edu> <837grozizw.fsf@gnu.org> <505C1A75.9030509@cs.ucla.edu> <83mx0jydya.fsf@gnu.org> <505CA363.1000603@cs.ucla.edu> <836277xolr.fsf@gnu.org> <505CAE5B.8060802@cs.ucla.edu> <83zk4jw7sf.fsf@gnu.org> <505CC70B.6050308@cs.ucla.edu> <83obkywkmt.fsf@gnu.org> <505D7B33.4000504@cs.ucla.edu> <83haqqwhhv.fsf@gnu.org> <505D8799.8030905@cs.ucla.edu> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, lekktu@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Sat, 22 Sep 2012 02:40:41 -0700 > From: Paul Eggert > CC: 12471@debbugs.gnu.org, lekktu@gmail.com > > On 09/22/2012 02:10 AM, Eli Zaretskii wrote: > > Which means 'sys_kill' will need to do everything that's expected from > > 'raise'. > > Unless I'm missing something, the only thing that Emacs will > expect from 'raise' is that it act like 'sys_kill' on itself, > so the proposed patch shouldn't affect what 'sys_kill' needs > to do. 'sys_kill' currently supports only SIGABRT when called for the Emacs process itself. E.g., it will happily ignore SIGSEGV or SIGILL, and when passed SIGTRAP, it will try to kill some subprocess. It's quite apparent from the code and from the comments that in its current shape 'sys_kill' does not do what's expected from 'raise', far from it. > I'm perhaps stating the obvious here, but just in case > I'm misunderstanding please bear with me: the Windows > substitutes for kill, raise, etc. need not support every > POSIX feature. They need to support only the features that > Emacs uses. So sys_raise need not support every feature that > POSIX requires for 'raise'; it needs to support only the > 'raise' features that Emacs uses. Likewise for 'sys_kill' > versus POSIX 'kill'. This is true for APIs, like 'kill', that don't exist in the library. Those can be extended one feature at a time, because the missing features don't work anyway. But for existing library functions, the only sane way to replace them is to have the replacement support all the features supported by the function being replaced. Otherwise, one would need to analyze every possible call to the function, both directly and indirectly, in order to understand what needs and what needs not be supported; that analysis needs to be done for every change in related code, to reveal the new features that need to be supported. And even if we want to support "only" the features you had in mind, 'sys_kill' will need to be extended to support all the fatal signals that wind up in 'fatal_error_backtrace'/'terminate_due_to_signal' or whatever it is called these days. All that in order to call a single function anyway. I don't want to do it. From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 22 06:56:59 2012 Received: (at 12471) by debbugs.gnu.org; 22 Sep 2012 10:56:59 +0000 Received: from localhost ([127.0.0.1]:48104 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFNOM-00076B-P2 for submit@debbugs.gnu.org; Sat, 22 Sep 2012 06:56:59 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:47331) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFNOH-000761-Jv for 12471@debbugs.gnu.org; Sat, 22 Sep 2012 06:56:55 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 0F2B439E800D; Sat, 22 Sep 2012 03:55:11 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3PaH1qnvgCfy; Sat, 22 Sep 2012 03:55:10 -0700 (PDT) Received: from [192.168.1.3] (pool-108-23-119-2.lsanca.fios.verizon.net [108.23.119.2]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 99D5039E8007; Sat, 22 Sep 2012 03:55:10 -0700 (PDT) Message-ID: <505D9911.2020704@cs.ucla.edu> Date: Sat, 22 Sep 2012 03:55:13 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120827 Thunderbird/15.0 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: Avoid some signal-handling races, and simplify. References: <50590626.2070407@cs.ucla.edu> <83lig6yoim.fsf@gnu.org> <505AB299.9090605@cs.ucla.edu> <837grozizw.fsf@gnu.org> <505C1A75.9030509@cs.ucla.edu> <83mx0jydya.fsf@gnu.org> <505CA363.1000603@cs.ucla.edu> <836277xolr.fsf@gnu.org> <505CAE5B.8060802@cs.ucla.edu> <83zk4jw7sf.fsf@gnu.org> <505CC70B.6050308@cs.ucla.edu> <83obkywkmt.fsf@gnu.org> <505D7B33.4000504@cs.ucla.edu> <83haqqwhhv.fsf@gnu.org> <505D8799.8030905@cs.ucla.edu> <83mx0il69z.fsf@gnu.org> In-Reply-To: <83mx0il69z.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -2.4 (--) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, lekktu@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.4 (--) On 09/22/2012 03:07 AM, Eli Zaretskii wrote: > 'sys_kill' does not do what's expected from 'raise', far from it. It may not do what's expected for 'raise' for arbitrary Windows applications, yes. But it doesn't need to do that. All that's needed is what Emacs expects for 'raise'. > for existing library functions, the only sane way to replace them > is to have the replacement support all the features supported by the > function being replaced. But the proposed patch does not replace the existing 'raise'. so it doesn't need to worry about supporting everything that Windows 'raise' does. All the patch does is to tell Emacs to call 'sys_raise' where emacs.c would normally call 'raise'. This doesn't affect other calls to 'raise'. The Windows 'raise' function still exists, and will still do what it normally does on Windows, when any non-Emacs module calls it. > even if we want to support "only" the features you had in mind, > 'sys_kill' will need to be extended to support all the fatal signals The current trunk is already invoking sys_kill with all those signals. If this behavior isn't correct for Windows, it needs to be fixed, regardless of whether the proposed patch is applied. The proposed patch doesn't make this problem any worse, or any better. From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 22 07:18:18 2012 Received: (at 12471) by debbugs.gnu.org; 22 Sep 2012 11:18:18 +0000 Received: from localhost ([127.0.0.1]:48159 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFNiv-0008Tl-Su for submit@debbugs.gnu.org; Sat, 22 Sep 2012 07:18:17 -0400 Received: from mtaout20.012.net.il ([80.179.55.166]:39008) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFNip-0008TZ-No for 12471@debbugs.gnu.org; Sat, 22 Sep 2012 07:18:12 -0400 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0MAR00J000ITKC00@a-mtaout20.012.net.il> for 12471@debbugs.gnu.org; Sat, 22 Sep 2012 14:16:23 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MAR00J3P0NBK610@a-mtaout20.012.net.il>; Sat, 22 Sep 2012 14:16:23 +0300 (IDT) Date: Sat, 22 Sep 2012 14:16:12 +0300 From: Eli Zaretskii Subject: Re: Avoid some signal-handling races, and simplify. In-reply-to: <505D9911.2020704@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <83lig2l343.fsf@gnu.org> References: <50590626.2070407@cs.ucla.edu> <83lig6yoim.fsf@gnu.org> <505AB299.9090605@cs.ucla.edu> <837grozizw.fsf@gnu.org> <505C1A75.9030509@cs.ucla.edu> <83mx0jydya.fsf@gnu.org> <505CA363.1000603@cs.ucla.edu> <836277xolr.fsf@gnu.org> <505CAE5B.8060802@cs.ucla.edu> <83zk4jw7sf.fsf@gnu.org> <505CC70B.6050308@cs.ucla.edu> <83obkywkmt.fsf@gnu.org> <505D7B33.4000504@cs.ucla.edu> <83haqqwhhv.fsf@gnu.org> <505D8799.8030905@cs.ucla.edu> <83mx0il69z.fsf@gnu.org> <505D9911.2020704@cs.ucla.edu> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, lekktu@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Sat, 22 Sep 2012 03:55:13 -0700 > From: Paul Eggert > CC: 12471@debbugs.gnu.org, lekktu@gmail.com > > On 09/22/2012 03:07 AM, Eli Zaretskii wrote: > > > 'sys_kill' does not do what's expected from 'raise', far from it. > > It may not do what's expected for 'raise' for arbitrary Windows > applications, yes. But it doesn't need to do that. All that's > needed is what Emacs expects for 'raise'. 'sys_kill' doesn't support what Emacs expects from 'raise', except for SIGABRT. Please read the code, it's quite self-explanatory. > > for existing library functions, the only sane way to replace them > > is to have the replacement support all the features supported by the > > function being replaced. > > But the proposed patch does not replace the existing 'raise'. It does, as far as Emacs code is concerned. > > even if we want to support "only" the features you had in mind, > > 'sys_kill' will need to be extended to support all the fatal signals > > The current trunk is already invoking sys_kill with all those signals. > If this behavior isn't correct for Windows, it needs to be fixed, > regardless of whether the proposed patch is applied. The proposed > patch doesn't make this problem any worse, or any better. Yes, it does, in that it enters 'raise' into this messy picture. From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 22 16:30:14 2012 Received: (at 12471) by debbugs.gnu.org; 22 Sep 2012 20:30:14 +0000 Received: from localhost ([127.0.0.1]:49646 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFWL8-0006lY-6m for submit@debbugs.gnu.org; Sat, 22 Sep 2012 16:30:14 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:63987) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFWL6-0006lR-6F for 12471@debbugs.gnu.org; Sat, 22 Sep 2012 16:30:12 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAG6Zu09MCocG/2dsb2JhbABEtBGBCIIVAQEEAVYjBQsLNBIUGA0QARMuh24FugmQRAOjM4FYgwU X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="199731644" Received: from 76-10-135-6.dsl.teksavvy.com (HELO pastel.home) ([76.10.135.6]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 22 Sep 2012 16:28:27 -0400 Received: by pastel.home (Postfix, from userid 20848) id 9E818590C1; Sat, 22 Sep 2012 16:28:26 -0400 (EDT) From: Stefan Monnier To: Eli Zaretskii Subject: Re: bug#12471: Avoid some signal-handling races, and simplify. Message-ID: References: <50590626.2070407@cs.ucla.edu> <83lig6yoim.fsf@gnu.org> <505AB299.9090605@cs.ucla.edu> <837grozizw.fsf@gnu.org> <505C1A75.9030509@cs.ucla.edu> <83mx0jydya.fsf@gnu.org> <505CA363.1000603@cs.ucla.edu> <836277xolr.fsf@gnu.org> <505CAE5B.8060802@cs.ucla.edu> <83zk4jw7sf.fsf@gnu.org> <505CC70B.6050308@cs.ucla.edu> <83obkywkmt.fsf@gnu.org> <505D7B33.4000504@cs.ucla.edu> <83haqqwhhv.fsf@gnu.org> <505D8799.8030905@cs.ucla.edu> <83mx0il69z.fsf@gnu.org> Date: Sat, 22 Sep 2012 16:28:26 -0400 In-Reply-To: <83mx0il69z.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 22 Sep 2012 13:07:52 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, lekktu@gmail.com, Paul Eggert X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) > But for existing library functions, the only sane way to replace them > is to have the replacement support all the features supported by the > function being replaced. Agreed. Maybe a better solution is to use `emacs_raise' which can then either use `raise' (on POSIX hosts) or something else (on Windows hosts). Stefan From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 22 17:57:14 2012 Received: (at 12471) by debbugs.gnu.org; 22 Sep 2012 21:57:14 +0000 Received: from localhost ([127.0.0.1]:49778 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFXhJ-0000JX-WF for submit@debbugs.gnu.org; Sat, 22 Sep 2012 17:57:14 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:37658) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFXhG-0000JO-80 for 12471@debbugs.gnu.org; Sat, 22 Sep 2012 17:57:12 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id E04C639E800D; Sat, 22 Sep 2012 14:55:24 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Xx7nKOqkMmfm; Sat, 22 Sep 2012 14:55:23 -0700 (PDT) Received: from [192.168.1.3] (pool-108-23-119-2.lsanca.fios.verizon.net [108.23.119.2]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 522B339E8007; Sat, 22 Sep 2012 14:55:23 -0700 (PDT) Message-ID: <505E33CB.7090709@cs.ucla.edu> Date: Sat, 22 Sep 2012 14:55:23 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120827 Thunderbird/15.0 MIME-Version: 1.0 To: Stefan Monnier Subject: Re: bug#12471: Avoid some signal-handling races, and simplify. References: <50590626.2070407@cs.ucla.edu> <83lig6yoim.fsf@gnu.org> <505AB299.9090605@cs.ucla.edu> <837grozizw.fsf@gnu.org> <505C1A75.9030509@cs.ucla.edu> <83mx0jydya.fsf@gnu.org> <505CA363.1000603@cs.ucla.edu> <836277xolr.fsf@gnu.org> <505CAE5B.8060802@cs.ucla.edu> <83zk4jw7sf.fsf@gnu.org> <505CC70B.6050308@cs.ucla.edu> <83obkywkmt.fsf@gnu.org> <505D7B33.4000504@cs.ucla.edu> <83haqqwhhv.fsf@gnu.org> <505D8799.8030905@cs.ucla.edu> <83mx0il69z.fsf@gnu.org> In-Reply-To: Content-Type: multipart/mixed; boundary="------------000808040109060706010300" X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, lekktu@gmail.com, Eli Zaretskii X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org This is a multi-part message in MIME format. --------------000808040109060706010300 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 09/22/2012 01:28 PM, Stefan Monnier wrote: > Maybe a better solution is to use `emacs_raise' which can then > either use `raise' (on POSIX hosts) or something else (on Windows > hosts). I still don't see why that helps, but since you and Eli both seem to prefer that sort of solution I wrote an additional patch to do it that way, as follows. Updated total patch (compressed) attached. === modified file 'nt/ChangeLog' --- nt/ChangeLog 2012-09-21 18:10:25 +0000 +++ nt/ChangeLog 2012-09-22 21:44:27 +0000 @@ -1,6 +1,6 @@ -2012-09-21 Paul Eggert +2012-09-22 Paul Eggert - * inc/ms-w32.h (raise): New macro. + * inc/ms-w32.h (emacs_raise): New macro. 2012-09-18 Eli Zaretskii === modified file 'nt/inc/ms-w32.h' --- nt/inc/ms-w32.h 2012-09-21 18:10:25 +0000 +++ nt/inc/ms-w32.h 2012-09-22 21:44:27 +0000 @@ -200,10 +200,12 @@ /* Subprocess calls that are emulated. */ #define spawnve sys_spawnve #define wait sys_wait -#define raise sys_raise #define kill sys_kill #define signal sys_signal +/* Internal signals. */ +#define emacs_raise(sig) kill (getpid (), sig) + /* termcap.c calls that are emulated. */ #define tputs sys_tputs #define tgetstr sys_tgetstr === modified file 'src/ChangeLog' --- src/ChangeLog 2012-09-22 21:13:11 +0000 +++ src/ChangeLog 2012-09-22 21:44:27 +0000 @@ -40,7 +40,7 @@ (terminate_due_to_signal): Rename from fatal_error_backtrace, since it doesn't always backtrace. All uses changed. No need to reset signal to default, since sigaction and/or die does that for us now. - Use raise (FOO), not kill (getpid (), FOO). + Use emacs_raise (FOO), not kill (getpid (), FOO). (main): Check more-accurately whether we're dumping. Move fatal-error setup to sysdep.c * floatfns.c: Do not include "syssignal.h"; no longer needed. @@ -124,7 +124,7 @@ (emacs_backtrace): Output backtrace for the appropriate thread, which is not necessarily the main thread. * syssignal.h: Include . - * w32proc.c (sys_raise): New function. + (emacs_raise): New macro. * xterm.c (x_connection_signal): Remove; no longer needed now that we use sigaction. (x_connection_closed): No need to mess with sigmask now. === modified file 'src/emacs.c' --- src/emacs.c 2012-09-22 21:13:11 +0000 +++ src/emacs.c 2012-09-22 21:44:27 +0000 @@ -311,7 +311,7 @@ } #endif - raise (sig); + emacs_raise (sig); /* This shouldn't be executed, but it prevents a warning. */ exit (1); === modified file 'src/syssignal.h' --- src/syssignal.h 2012-09-18 21:00:00 +0000 +++ src/syssignal.h 2012-09-22 21:44:27 +0000 @@ -40,6 +40,10 @@ # define NSIG NSIG_MINIMUM #endif +#ifndef emacs_raise +# define emacs_raise(sig) raise (sig) +#endif + /* On bsd, [man says] kill does not accept a negative number to kill a pgrp. Must do that using the killpg call. */ #ifdef BSD_SYSTEM === modified file 'src/w32proc.c' --- src/w32proc.c 2012-09-21 18:10:25 +0000 +++ src/w32proc.c 2012-09-22 21:44:27 +0000 @@ -1421,12 +1421,6 @@ } int -sys_raise (int sig) -{ - sys_kill (getpid (), sig); -} - -int sys_kill (int pid, int sig) { child_process *cp; --------------000808040109060706010300 Content-Type: application/x-gzip; name="syssignaq.txt.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="syssignaq.txt.gz" H4sICBoyXlACA3N5c3NpZ25hcS50eHQArFv5c9vGkv7Zqv0jJnElosxDpGj5oGOvZYu2tU9X 6Uic9/IKBRJDEisQYHCIpvP8v+/X3QNwAIKOk1pXKhSBmZ6enj6+7h6+fPlSzSPPn/jaUxM/ 0Go3TPffztxwqk+j6e5Ou91W9pMHB93eQbv7vN17pnrdwePng35fNbv4t9NsNuuHHhyog97g 8ePBwVMz9PVr1e61MLHXeqpev95pWkPVpZsFajid6jhV6ifNf7weJ51sHLgd7WWvdpo7zQeP lB+O9+dJe9k/6MxUQ8/dceLErp/ovYE610uFB3HUwWBl8ayGga/+6cY6Te58n+gH/ufX0zDr RPH01Y7aUaA8jsKJP81i3Rm56UCdhOMg87RKUs/TEyw20pMo1mrqT5zAH3VmLZVGaubeY4j/ WTvpzs7LWrnaHBeitR8WIus+Vd1ng4PuoPu0LN3a0fUCPuj2W09Ukz6ek5DVQ3Dvh1rd+UGg 8C9ZJQ79vX6T+NPQDeSN/A2JNPcfQQSpjumVPE06Sj3a32nm8yzhNzBiT5ZoTHW68D3V2GvR vD06CtACpfnYXXTGauwGQaLSmZsqnAioZIGbak+IF0yliyxNDLv8t/UKKyRpLK/k71rZJ/G4 qtSlRyVJdgf9w8HjJ5bct4+tU+tDUute/xnL/K8pNoT94NqfLwJ/slJu6Cn3PoIARehtcOAF fjhVsTvWiWq8yaYPewePn/b2OmwQkGY0hlgbng8b4EcQjKdJ1MY+3FEUp3vqXx+Ofh465zfv b0/+TQOPeJlYj7M48aHGQRQtlD/B0ehY7ybKVRM3xenrOI5iGB69UJMsHKd+FCo/TXQwMTyk /lzHtOBChx6YdeRJYhgagcU7P8QxdmYDdRyFuykZMtvX92by7PsXKozABAQeq1BrDzqB2Q2f tDDOFqnDFByzBOz9Ss+jew3FOYLeZQmkE/MTnpdzYnQXtJcw8SyEVo2idGZ4TljgUYyhbrxS xVoJkbiZ+YnCf4FOEhL/irQ2JJun80hnsYbx6IUbQ3+VWa9trGkSuFMm0uDNC+8tlYWlr2kE AQcrp/K49NVJoz2RA33hF9pzFizaKx26cxxKHM3pdPxYZYuFjttjN9GyWx2DP+z5zenF2384 J+eXtzctTLw9tx+om4ubo9PTX53K49JX5+aCZsrf/Hx47Fy2WIBpFockvKjQj8Q+ljGbkVfI dO7e4amfKu0mPk4b89zxmKR8H8EZkPXeu7HvjiB5WDW8BF5nJOZgxTK12boaXp+8Pz863aIQ iwB246nRqixV+KdOrVTVZawnxBMxCsZ2q/pnxu5i5wkokCPbNVzGiCvEtLEinAAUHGRG2XQq pp3AXWHSFposCOj+FDK4JxkEmd4iR9voPCx7r2PHDdx4bhTeqIeRx3nEFkX0zeBif8QnVESH 6QtwuGK1dj146RAE2PloGWsUG3a0XcCejoMVGYdMjKuckp44UVhxD56fLEK9pAEyz1n6oRct HdmvvaNHEnWsoR4Nictj7vRqFLmxR8PuRp4zyiY4UgexwtH32CkPEzcEG05SnJmfzPIdGt7J HaXGEamln/J7l5W7s+HVVGPDVuqNik25OtYc1jKK71gF2DFnYajJJsgviXVoPrBNE+nU08Sp L8mJG4vkUd/icAyS8vQ4SGSnHuKAJXKsm86MxFuq0D7rKUicQfOI3TwYibH5qUPEbFs9L3aZ pDgndtRehDjvk0vBBCHZsU+/pT6R0nTGa5y2jiOEO8KxVksicR/daaOAlm+q1SSOdhvbsp/W bIulKmM4Tjpk88X2toQ0AkMIOCm0NwNyjNbkbYduUx2547uUEIDZHPmQFGLSCSmxGyzdFdxM PqjOZ5ScQKzhiEDDaDy7hQmASprLrlB18lr7CP9AF7ycADcgYVBnX0DBJCmBQdV4d3EB9Efm swEJ6RXLYO76ITb8dqbHd+w922sfr5YzTSgER7gLt+pl8wWcCk1j8bNg2gJLsI9sUdGzR4i+ kZtOcNBjghvMSYE3MNBo1DbI8UhN07sMNkbK8WnKfoMgpUNnA9UzTyLjSOSoQaktlNrGZxgA N3cTbNAN/QUB3cJ7rH1USy3iiGyAlru8OD113l1cGW+xdlTYnCaoEqrb66FzdP3r+Vtn+PPw /OYagQi7n4+iQA4HvjrU5OIFL3udDZ9IHt5x710/KCzemCPBwjrXPo1G8DQymo/vXRotnADL kNaSAtR6O6AmPkfGTRE2wCGRCVh+OUlx/OKZnVkUeK3SciwDsDwGSnPcZBWOZ/lE0W0g29vr ozenQwdA4OSCsW1DaGIfeWgQ+hJyLEuYE+rIvTvZAh0XM1jmQZ1Mcoc/VYIgGPgQVuY8xth0 kJAJAcyvyLx0qqo4FGv2eCqyUURDY6qzKLorbJXGQGVBABGBvP8ownK5TcjihCoENDCzRoOc ympkYIF24w0uTDJrpuENIxk9b5HXZfTo5gIZR3MCayEYoKgjJrmeWBt8vg3oylkg1BSOmXPq BBgWCYuRBkvMDrW8oHHZgp5YkykSrv0ohT79idLXjmiPRAIzwXK3XwGMBf4RrbOU//cMYYnh tVkqj8m5+3QrWEJo+2mZd4MBDY2UQfEoghmfnDuCaZ0PR+fHp8MrQE0o2VQYBQ3KoSl5WTv3 NyQhRQZwfgMnAR/qT9jvuQFZ+8rWFlEJcMiuyYDWVUuRhdC0d4Z50VAcCk5+PCO8DlRIBC7m +Ptb8MlaWoCVAHQIdex7wHfM27YjEllsztWmz7LNsWXkatu3gX6WK126WJeWI8XPDQSWlGve WwhxI8tmyG57LYpg9CJClqyDe23AQ0DwY7aGHz9xyOnMXrUoOHY6vPOT4XDovDu9OLo5OX/v XF7gbOwyVUtxtqrYhxS4z8sWgT8uIkVj06RtjeMh8P7Y2SSHVuec6oZJSodJPEg8pF0sIqjd N1hQnUvdglpayvjmMfyDB2fuplmSu+YNKGmdzxhnA2LmCYZKQQLAzk1ScnQTeGcggxU5O/1p 5mZ47JFXrHVEMLp7iP6uRfEq9aezVIeSpyMRAzaFTHHcmh0NiLgx7JcduEwTQULWhapMYg73 +deEwlMaFbq38BeFuGhuDhjt5zbMrQANSh/VkFATwSjCc9MQBpCQDV+eXA43+LHsZSLA53/n i32iiU9O3QhF5R4I+6KyktAyyNqXKsgU4BoMnUBBYBx0fOxuoeum0jOhP8KIeAKLBTNfP+a1 w1Xq8uSYQ9wvHBlpTTgvVoArdimKDloAIvk743+rTq1Sy2Jz9jTl0lT+Uf9qvLk+dq5/vb4Z nqn//Ed9uLz9uKd+/FF9Z3CPajjO+/Nbx9n7dykZ3qgWKcVVCVBWySzKAjh/gEz/E0gQ7wh9 LuZ7PmEOKIEC2GaBMEc4Cye3DGiW0zN4iF4S6LV9CbQiyRIyaKqkCAggmYqOklyVyNXIALaA AWmwyllkD5GYw81d5yRLPwuEITJVGFNoM2cTAurzPIYdD+caJhfiGQLliwzA4VKWseQ8UrfI waSA8AId5hniQzRBoAD+hGyZrxGncFVqlNLVLkMvjOwwIo9oYRRKFRKKkOq5KmCUqR9zMMxg 7GT1TJIxBFWYTMWUq3eBf5fXjgo7ze26LvcyNg62KE9xpChSQseWljbeHL39x83V0duhc3py dnLjnB19zNPvFNwsFANlSf2Y0jqfM1C2Zeou9Nx6ye46L5SQ/Ek9/DGF1qS0GUO2PnktvawD XeRPSilYTmBFhyrT29DbsT/B4nk3wIoi354616vclhrCByk/cemZqlXMSMtgY1OQpvMp3ojv 86kgl8Y+1dolfbGmm+RzNbK4rih3p6hVWDFXsxNTx7dnlwjmKolEBZeaQBHpeqlOSeZdQu3l TFapt+zsSpVRCofbhK0K7wNkx+Iz6tue6lDHVo8GlMRy1ugmMdC9ADlWXf+FMgXMxJ1Ive5T XsGmVRBA3iF+MKBE6glrbDOgmEVJSpZGPHNGlFI4Y7oggZHrUUTzlxmQ5chNxzMkGBzniPKH 28uWgaz8eTO8OjOl0xUERuI04FXmsJhOiukc2bKQ7ZtpW26lMCEc3QVDvnV1hNWdVMddQIiL 2CeFNxok6ILAbmLKfwJx/WBV1bYiPuXVBAsMJqnHgW32yuKprk0JChQ051xpQEpBmJq9YQVA bBYqKABQ1mCUED6pXJ8skxsHEbxyGXKXUl9OBUw9B1NJ+3038D/rDZiOnDYXfp7dkFFbhSnL cvKaEcRZqhn99eYvtWg7U29E1Afqf4AF4QzhWqkaVVco62DGtYaipHoCAz2DLHwd71LU/z3T hI1DjPhplqaLwf4+4Dw01XSE990Ywfhe78/SebDPh9f2yIPvG6b358m02z18/LxDI3DG29qP pjm3bj6aB+t2Yld1+4Ned3B4UGk91o08HPSeD/oHVuPxSb/f6vVV03xS83HOM51Sr4Ngw96O +mNHKTIwuyeF/zsCsx2e6CINS/Z22tQrtpL6FztNelLuoLzYUV92ipiENYrVK72Wv7l+qaxg OKh2cYSHh6bYpc6OTjHFsWtQdQLZ25xSLlzV72OPhX7YOzhsPVVN80lCl21N3XjkTjUMD85d DI+MDI+wI2Jema89J4yCaKoa37+XKSqfguDQ6XxPuyIRVLe/sXWimsxiP7xDpjvVnxbO2B3D T8lLZvbg8QEzK5/CLMUh53M0H/nUUqaxDynLnMiqm2KvETqRGVPxltxM4pABWas+6T+nCwhN /ux1eVlRECokNyQ7pSqAegRbain7wYQLKQA+QG2hZrUBCyYqNeB7jt5cScBwjt+d0pJKTeDG wxRHAM8LR9BS3/8W/xb+kAx+8AYmy7KC3kD9kND771twATSbV6TVkJInU5CEFGq9irU+ohYD PRbQlty4djjrqxH3f213HaZpZvkO82R9G+cJ30XoDw4Pq85jY+gzGtrt4j/LezzutnqPVRMf T/iECltO0jgbp3nf5JFp17FS7j9CPAjbn3VMEcQNkZRQ27Fa8JoRHOAMO0Y+rEyzfZSlbNnb +p9LN2GMQdQ5RZXQQQXJltDg6QV0NfllKrkj9cxSP+BAHSIZLSsyMBoyhURvpQPrgQVKnCN6 6qM0tz8SwuNcFZAhSbJ5nt4wjVgDlMVumMoFlvZOmzS3cg8CCsW3YBiZ7RtrIg0+Or06Mzdf yo6Ujqf/uNfCGTf75Nx7fEIlXxtnyExEsGsPC56GZ0dvr52bk7MhRVvWz/Ij9VIBphKadASa EBVjvZgvaLFheN9pP6Csunq1AzS2nOKegkZ382lfWa5FY+jfmjvndFgs3H6FE/FjV/JN0Nnb 26O9lNmjRb55vjjhPyS6qKqap3RM5lUKpovDa9YPt4fICLUWTsEEaWLxPm2/moSqkRaOsv/k iZzxYd945wdfZPAXOQyKK9/l1Exc3DyKrmGdRlfv4JTn5MDspeqxm9NBIoq8Fsvm0C13cF4U gtSp3D5gJWoL+83qc96S2fazw9YBcEv/SZ+2v6HaeeHdutGg6CaQXCkTVjel0GM51+5UxGmv 0a67NmEt0uZFagsBiu67teqYpN1/oaNgR8kV5lr3SGDY8Gl8o7lcxxfvjqPal6qIoZFT3XzJ AdRqQVOeF9+NKRjFlPheUNsrNNZ2MnjKYaP3tNUDCu0/e2Z0tnKvAwCP2hhRaGM++tauMz+r 18wfhVbVVYhU40fXVKBqr72sVbKg2jB+tqWKqd29P1XdDeU1piJmLo+7otQsE/joZxDJ8+dG JLzvrTuk4IPIYekuJTML7TkbHgR/nd+enr6oV/ku04LOVLWerq4VSZxXXKYoWioUq/6uiJt/ OrHeNL7lWCDPbZDI7gKuYZH9dI13+qp7MADkOXhWgUa1wyW5enw4OLCTq95zQFe6r/y8dSiH +tCfhMgaTMBhcCEtzw/r66l173baDzfvOxonwbURgag4s4xbGaYr5cU+t+RMD3VWandwZS4y zluAeX72VJGaUu851mm6wmH4MZWQ38Hp6E/ufEFod2kvK0gmC7lhwte4gHrkElbSWteN3LC0 EK+jqQwcGCiUxr7my5HSbC8uJoIaP1FIvTMsTvVGl1vpEVfHPsqt4I6JvyeTjaUiKqzlhaxC WnkN0PeQPUAgSTQXeRCILJAZN/Vaeb8+p2iJUprDpqicuIaGzFrSxdhEV8Un+WFB82Pgj8pw MtwVqJslGXW+IZy2YUc4kUuosZZy+WhlxFTatIkWTKdNThTMpPGK0KfhfkNOVYnoT3qcUVrJ RKhLxHqjE20XgJd6F5GK97nTPDk/PTkfOh+GR8fDK+fN8P3J+U4z13xLr2UcXuWJ9MY7VQyR dEeim5ye6bSYnmck6rUC3Ofbgz5fxt3oo7dyEM8eOqE6P3ZkWgPVrMDSgPrTYyJfPcHa08Oy dpGSqdiHyC3TNceQrWdEy0mzusk7vZTbsIJxt4JvV0fga8m3vfXvmR/rOZnRQJCgguioJk93 4+ZU/9J0QZSKl+Ush292aEJspv1ZOmujB7zpUPKccprkTqj5utAx6MwNhbmpWIujKI0GpWrl ZEWZUqipW9th6fwVxq2FXXMWZJZMZ05dXf6hRuAjrHLtclNFvrI5OfGvbfCbNsdk8g3KoT5S R9DEcTSX5j1HXIOZVflygVH8FNO/lgvLPsiyI2rdwpny9VDJcOkXE7HItvY+9ten5RyfyC3l bYwu/QS606LaPm2bbgzW8VsgVb67nJcG8rvLvAbVaAN3Sh47p8LhRzwXTJqvGJm0mLZeFvqS LhFSK5wvRy/FwAxersH7385I8+8wwqpFWQBPX18Fyz2yQezk7PD+g0/3WujuAd2wMa6vpLDU 2/EUd1C5hcSdYvYuHl0DW7YsN8W1EPY17Phs3szParjtmlA17I4KItYtB3PzDrTenXw8G+ad hcrvccjpmfuLctNb8g5p7a/v9lCWtEVxrSqRXSTKhWxrG7lZgjgeq4SXxcV9DSkXbNzbMDUW w00dE+vM1MCrarGKLxDGURhl+VFZTX9AIFshDDAq9KEo8VgM1FR6TK1HT+ku3cYOiMJDO2Ka A2xskWezuWe2MsRJbtBbQyYJorXQkX9VtEZtcy33+YqNLl3ZaaH3+YU5GzDluSu3nejGMJ6x C6aGvnBxJBeRU+mv1J9M3nCkiloaRVx2C+kHSMymuJiU4IhcYiUcSz0nQT9elCuo6UZJ781c j+BfKVCEF8jElkRsMqagfiKzq7mxnf/cj8tDKlrwB1uBRBl3MoGEc19lbl7Wez7TAA5F4Qsl yQ+57EMe4N9vRNaLHjwoviArLn0D3mtvsy9rEOXV22qpVITb47EP/shJP6ifkv+kKh+jVO2F ScqDbTLVEsOD9fy6CkU++Ut5o5RVf3UjP9E+aKL1azahVlD5YgnPlAe7udXcIoth4Btm8xFO MZps+s01KkIAidbaT9PyUy5UrXy6tfee12f81Z19VxxRnQZsPVjVs3Wg3K35fxQKuF+GZGZ8 e0WdDn8enlYE1TA/dJIR5n5Zd+8vCbB6d7jBC+1t2ElFTN8iJ0NKNf9MYhWR1cisntv8t2dV lLnT3MyFuHTXrGmLNrm/tdX7v9hpfiGKRQjm3wZt0nlRHlJ747p+aPXnhqyw0uPjXwFvBB31 36UoVoGg2/X9lSoU8Njc0UMcsm75WsHd/Di11g3lm6gTM1Ued5qVn/WVRS33mlUXnmUrhhGZ l1Ph4fkxyUSSWRLNZqmHdrC1fMU3veyOXv7E/nVxtz/oPh30n1fLVjVDD3qDXn/Q61klq8PD LrWKmuZTur2j9is/lKuEnE9J1ZDevLl957w/unSuT/45VI3RHl4ddF98U+eZi46/aGWa9tQ+ Q36seu3RKtV87w1+gUpD7C3utF7wJSEBCLu/dXepBm6KzC4gWRTLHd5E0+0LAzyVMr17+b1H Sk29xqi1yTcsXKq339S7zrsqRObN8L1zdHx8RWRMUdysZm4lTDL6CdOWFZUpFB5Q96ZpPqWV CjpUQf4/9t61q3EkSxf+TK35EaqcNVkYbMp3bpVZhwRDcopbYbKS6upcGmMLcKexPJadQFfn /PZ3P3vvCIVkGWyTPafXeU9OT8lIoVBcd+zrs9mnEG3+td/tzWzXVzeJwturVmR8BNMqe2Zu RwgaD8dDDwW15dYpSLil6JbjUzAdGD8iyZAzZISl9dW6tJ6vsmY8WTf33c7o1ocNQPwKjMKZ zVPaQykz4sBXp6OzTwbXQmJKqF4E7mBJP8+JL5e+FVCkMB50aMkVEDUT96NWrIing1ytEp4p ycpg1qH/dxp540GMUKvjY5p2RGTREthvnDfZxEQDcXfXGojLire8LN9YyXmvadAwzDRzwU3e 62M3ROJg0XMqPm8c+ex2oi2vVtiiYn6YFcRcFjg5WADS1sss75gpIyyuJ85yjttlTI0y37bp OD3HfRBcaq34ZeS8weyz+lVPj0a/1xre2JX5Dp6ZWIX699Wjt9c4utjxuD00l/IXsXwir+nw 1IsysXyVBRrPKk3HaAj/SH+k443GY8P+xX/3+4Vs14Ld7PbWaiYZ+Y44dBmwVZg/Rq3c9rdf NsPgWy2c9ZIuHPnxf2bhpOnoN1k82sENcbWS64SdmI1oidNBTW66vlaujE10BleqWaaQpw9f nTp3aiStFTfr0vJNQ1Wtj1X2kFkr3xxjNJXXoFlihY/Lbdh7M3gQZRXO9iGqwQi8Khf2XzDh Y8u/IvLL0HJhq72lnf0LYqXOTi8aJxeHO0f+wW4sy+mC+5rk8K2AmI6EkjKrpox5SWuZEhKp X+NiXx0ef/pYQhhCZe5Yxvfi4Vn3ijQ85ZghM2OZVXgTkDMwOLowMrUNOcA2zPllSJFXzFsX GmLklCzQsIDEQpHy8fBk7/Rj8+RC9HWzem9+ZxgJjZwSPaaY6sDW9TjSQMx4VwHrOnrh1VXs Vm+Cpwy7BirD/n/ler5Ea4qvVekLnfKDmyHx4gME/wyYhXeY6Q/NA238Ev11sBv2r0XZCaMo xNBuwvM7L1aTaDyEwz9kTw0h7IgKQg1hHFWjuuIla3xKxVrl4ZjmBuGIQpAGVju25LjzyQuO 9yE91pgojkVfxsq5ph5ed0r4j7gQ5r1lIYRELvrBvU+H4pe8neDJ6fVcH6CZPWHd8cxYFpiZ zfU6HDM312sKEJXgKaHRvO5sm89mLaJMbhX/riFy332GLY5GAf/FSMSeFnMeO9jx16zGKpRo ey5JmJoE4kug2vKrfZIvRBXIweX4ZjhEQCpKsXcnD/A+3EuJyo4lco0ljbiBSqHoy9MogOBf xLtf/o43c80jka1Y36ql8aPSBTMpaKXKXph0qauTgXEVAMQAHAWcWyQs0wnENx2nAht9ins0 bvtHF/75zt7hJYavDBc53DneObnw9w4P+GbVM/oQ8/TwxG9cnsmAl2vxS5fmdqm8kXOk/sng VuKeCv8uDmVPlSqiFB+Fhe+8o2408E+v/kbCKc8DzQbOjP8ah6OArr3W3VWnRT9oncCUsW0Z gMSL0fhquJ2qzOBx0JfUzK231AkbXzIgBnJmV0rrm3n419MPINXJ9vjtLoxIjlNUHlqAD/3x HZY60R9f9WfLx6fNC/+kcUD9/I06fHh58uFY1vJl8/fjd6dHqhUhQcquwFeouGAqLkjFr3K5 wlt2h4bngvFdK1jfNf8kHMZBlN8VMjBZJpzYBnEEGMd5gIz5zcbF8U7zl7z3mjbC6NHHE+sZ pUFARTrEpWYeOevdlu1H91QTZvGjc4O/zJfkExY4xihypNKnHMjYjY6BM0IxnNG++BuMzxqD RUIzzBa8Az4aUfkeY27cf/9TmvKDjT+DG7K+4YR/yZsMBDgahmNIwWxm0O+YF9QsI2PFFv4Q fhkCrcDWMUw6Cbc4ezG+KqEXjOfF7s7JySnt3w/HZ9Yv1PHwUuc6WRvbZodhGJwXvfm8vlIT kvbe2sdBmPSpm+68Bf1TJ0FE5cYsVDRdMpN5KhVLONjkgp0rGi8WXagVkQAuAAlk3Idrk7fs UovOrfFV3Ds891ZYe8y/crSBgZv3287RBxISqVzhrYZlzqook+CrLlGJzlx6Ed3noIrK8HM/ 61XuJ1+EQrEm6J6EnfH1wONIx4BdEfhwhJcD9PvHOxe777d1ufICN/42euJK4JvxseC31eAu oSXqRKCRjHDmsEHHgA783rO85wxjggEOmTWnYWk293ZI6l+mPzBVUJnl5lbndVLibha/cDoQ TAC7NF7lDXNgb8XsgLoql4oYb7lkOGj/0xYAbXzse8vDmY62RiPrv/vbfaXMaERECQPpKx53 iZ9lNQgeR0Sa1HF3g3k/uRhVQdCHnNcB40kvNE52T/dwgMGRnm7xXGy/bFr3kztRVaLOd3Pz z/b3nYWnWVCckpO8WS8jTGlVr64a5fvlk8MjGDU6iPW/a41yQBto/OrcodpAEG4C9CSlbJmD gR7zwLxh6u/LH8uvo/j5jfv8xnm+CIP91fSPP6StZmeZ6I/yJ/rKXoNXggIspJjnsdmj08m9 Yvq5BF9vJdxuS1uV9STg7fSyk/GPpQ1im6G7lqvV+ZpYG+Mcqcc1UbEQYGXincrQn2zZ1xvi BMNYNjrmN73HAdHEFnUbWAIm3Eh1C4hYUiwSfsTR3I5HmZy2MwXxsbSjs9DqgFER/BGfWxDh 4bb2WLX1G1Zbv5T5wuX++c4xbWIg1cijnKu2m18XV9ZIwrIbSZi0R5gxNy4+ydG3zBL7dIyH g2FX3SaJ/7k01YAksQLChXl5hkeaX1YtvJVxciKdYSeMTWPao/OgF8CyIs7Q1OqrglkNseWh XN5Yl5HhK88Jf6MTROBd/AHCId7gjhHz9Y7o/PhIWXQXG76gVqtzqOUq/6ibsFQMJAw0xGYH ONq3nbiEEbH92Gm91iNVfB16K3RHif1TvPWM/GMmimcGH0kn3O77NCepu/gCXrFYvIyybXBR wqsv3XAc9R4Rw9/rBur0B2funoZoGMTpAoBKhiGHBxqMNtH3CHQDQ+u1u/B3BP+zpm9fwF/o mgF17gN2NPq7uuiiMSQLhDSP0SC0vo9Bi5gnGr41nQwOBKG52MzUWz81RBOBTjPITlOGmhZP NtzJTG/HgaqYCTNRsSqptl5k3S9dqwnD4evXrOMSesSOCAiJjsCgMVHy2WnG3z09aoKw2ZNc RBdvdnU9+KPj5t5pM7ZHM1QFPLLgNBa14QJOfMAdXMzYl5iEu2AI5Bo97AzcXNDRPqmtab0W G0NJVPal4Qc75+92Dhp7Qo+FkMjiEOpR2p4zhFpBlUQk8Q11UOuFE8W9vsnSTW2dKMxmgj+h NQfrw/COOtslmstORd/FLMgMamCmiMykTlRnuIsZFZDKV6TbpGRVddxVVXIXHVs5Td7PP//s nQXD29Ygwp5TJSyJ74jqkMAAhkUBNgkCSMa9UZedDYQpidjFz2qid983qLnNi3OgtSxLkRlN eZbzG+nKNHzlh/7nPvtEKR2hzfWFToJXxuSzUZVNv1GtOfuBR+T6noRphI8LS6ztyXulvNeE RbLp3AvHI11c171xdOsty42XCI5T2bQwYphUh0vTO7PI5RNFMwXz6kZRpI5iauXKluL9C6+h 65fwzvebNejf/S/d4WhM9IZOKFoxRH26o1487I5kueBRG9PD7xlO/9JX+ewpzx+S/UapYba3 XIeeEo1cdaucHufMshnOP6VyaZNVA3I1609Xw28MltgLiUFlCUwX+u7pSZPoMY3BReOgcU6s Pawz9B+fxJpuJzerkmOAMG8A/d6PAfXbXUjVsUy1/OwlRY3BfeHt4J6bnPO2rGeIVYeU1zfZ 1GR+TPCl3BdvbJfKkz0ex6tjjtWX6vz4JTKZNXcK7Trj9r1ka8SNozGMpXKu9YXtTJLHwz4d qdT/D4d7ngGwYvdqQyBL62BRqzRX+kPmSo2wpbSDExyHaeZWRq1OB7oJZTsDOAHjzvLr0Zyz ZWo2QQBI3CLRYxzj7LPNM0iWHUHXTxX87N3cCXABtwdrkYu79xLGq+/pVRiu/mSDZHqAlzJH d0l7HRLLdt0jgUPufjX1rozuwGbQxYzoRllHVH4Y+moEMmEkgKsBX/sIgW95CZz7zHbTK0ZJ k/ASALneEGfkWHM9r0f8kxn6/l1wdy39heACK+hfGrAQMYQcK0LkSi/lqfe0nehWP3qRDVC2 AbvtNP13px9O9ryf3qBZGFshEqnhMgHgf4eyBO1fVWQAde6ju82d/Yb40eAwBszVAqIxV6Zk Ss1B4z6zJJZ4UYE8t5WL81f3zxuNFNmDIgyGKurFSF/1YaBmbMhl+5G895ssUIDMs0sDL10R mEQ3gMj8EpQD8kP2l5H27ryVTiBKN0wit8DVgcO1Dobp6I/NT3Oo/JwqMd7xnnjNSxmUwNHS OqV1v0M/6fMuSzVvXnfOROXYSySHZNnlvIJ3cez/3tg599/tNBtYTtqGtdGd/xi0hvpy6i4K cn1np83D6fXlckY1tc7YXOaHTMYlCRP7O80LGEKX4xGvf8q7n7vvtB6la3GRdWjlnDLdCDG+ P3u/jvRYXHjODGF7bsIkpkRmLW7XBtql33ePBfQ01cuNTyALPpz1oLqUvuQTzcktwjfsi+Po Zj5uVoJH2FTb0KY1DuHf32HDeONd7u4QE4A/4l6LypfvveDkZQmTnSLM+N59mxP3T+N2vKFu xxsJ+VsKLqXPZW4Ed3ridPYWOkahFSAp++IvJngXZiXQPenwtndHEhmUNKyfjB8wCh8mjoRu 2mkyTCaZRURHVrftABlDc8ii4F030oQ0vaA1QDBC2O9ECUfmsjoyGwWl6ghA548YH2h3hwRD e7T/HUoCF/9s3rkxNT2IS2A/uA/6X+JJk1at6yytJ2aJygriGM5eWNJC9UGqFjrdGzqameT0 uneMhiu2bMBXtaK20Df+RxPMfzKcNEeNigEP1mcoqWwuIq6tG0G4jKDtAoawIrywSq2wubnp ra15dNmcXXWt7JFL9Hk2453EPJC7ZjdFYS9Xx8ltdFd4S7SBhgFouPIHSdn2N013Pl2YO7XK ffPhAB+P/Lxnh21mBvulifU0tML8kInEdvLD62ssJIcK2p0PpsAFvWJtvK5c0KkxIvyJBZEN aWigQqFo9Wr2EdZKGFXrQvIff+F8N38PwmsPf9BZVMrL5/NwK3stU3M3sxw3cs6DSYZbJteZ XR01OwIxddcP0/zNQdHT9cqiKcOoD/26XGPAxe8NpR793VrlRn+HY481xCX1QFRuHmhFA8+i 8HIGOPa6O6TjRrZdxI4fdDMc0q6FUujiL5aBDkmOJYLQJVFD+M74j23tWWlDelaKiQP0GDzL PPvDMSQSIlVGhcU228k659U8KslKNjFDfzRVqSH4zY5KQ24kgpk2tsrlrWo6mCmjZEZSxRoc 4lZrVUvKjQ+cqKvFB865DW549Ijbq1loO05JFwPoVaoKmxvIvW+yFtBdnrU661nK6wY40cTF CbaKOpnetfpjINeYNUMD9+7DQXPtr31u+L9xHFzTJFnpxLjECniuuZn4/GvhxGwH3S82CF3N CeywmUo/ZdAGL4ZjJv8xfk8io6OCK+tiZcQut6ZuHzaDmyH129JAkjEBqFTeKMbBBhrur1jd V+NIqgdwhPId3b5IIGzcCUbtZA8SbmwuZPiED9kURE62ZJSKTzunPVnxDAaWBJa5fknsg5I8 ITGynbHkCJOvNQ8PWKfLQBEODDUtltaIiRT8AL0UiDzDkUbCHQQPXeOJnHb/mzIm2kGBUY3x 5JmbyH23OhWu9On3vIlp4HX7Bq8Yu15sXIpdpBkcIDNQWsBTs0NVHSJ8eJ0YXwWD6orkTMwn HdV5BdXp9q9hjgxMYtMwVmfIiTFljefU2WcjX4K3T5FW+IarwteWNM2uDBgoihuwrfjyODO7 I0EJ4QgfBsLh7xlPw/PgLmCHUYGa0jx1xsI9AWXjoC9wKa3lJlSjI4Oi0KepE1fI4RMDOEQh bCjilRiaI4Ad5YGjoPUYd0dtrFIYzyw2YXubczQyzkqlLdA6prXjuRZYwDVr5FPlIDJp4JSM sTm27QN2Z2XG/rV9asQuGJ47ndTD/MSSzinPP6U4SId+L9O1Vpc4cV/OS0VrH3OxlicS5GU3 JZFeTz9vLeRdA2ECEeEqUMwvfBNm7u7IhHQgpe99a9iXDASyJ0BaoHpVB+iK6NIrZWOrUQGK erW3c3LQONewvvcOjqV9NknXrfU5kaXTxJcXskE/J8u6xvBv4JeQTBmadkhg2jXpi6CA4Dp+ 4mQ2lOQHij+GR+pDpFYoJ3+RAdcjSgUGwKVtBnGEZm7cRxoG64HcCf3WGNS5xfkF72NRt1Jj h5OKjXTN9C54eiRnOPXSIzWjP0H6tSTiNccHbYB1Wq3XaqnYOE/iBak7SIQSjkbhnW8SnYrK FXwKDYz67cDoJ0pR4eL5qXhebxv/l+hzd8A6IbVD65pm+12zcXHO562jKB3ycccX2Rb1TRY/ 6vV161fDrexAMkPN5T82ip+2J3qx0r7F4drpiqvwxNJ197pFBpU4xINd/3jnHIILsQXSNkkN E+G8fU1dvHuUxq2vCxrreq1sxNKleFc7gUSrnvV9f+O5ruOM00yNayNuB4FJf9B/2pAkP+W9 V3jnlWI6ry6p/E2y1tQXaA6Qk71l3kp4a/CgnzXOm6cnO0eHF78Ts3Py4bJSznJpN9qYzOYV JhpXiB3IsppXyG6c85HvYSUjWYg2tyA7vG/snPmNy8buq5zFzzVD+Gz5pC1L9ycvi9ugNQCN /gOK0/Srb+DJ+2o7pWKTDMx8prODiwlqCPttN5K/VITan73gN0oTOyvGlHYzdCjs7RTaOblE p+T3US7Phl20kZFFs7xg4OLUN6JawliWpkY36IwkFkNSRZcGExakkkKBM8FAXiXZvJPZkomk MoUlOkQB/MQZGPvh7XjAqHkJ50KmLFyVr1XRJuqHfXZ2xMh8CbZdWKbv3bI5gDCxGXCCBkD+ tkfYUto1jlPkQI0TF8tJuVRT4udrUcs3UF3fv2Eu/PDgBC99dduXbl7GdzMnvxijJFvE8Sen 8XsvOUrYnKl5tRDknkSQPTPP7gITeEsLeqxZhnj+3VWHITvtsyeRp64hSF90K0CAkdmeHGLk apxpReBVkxIJcCZ0ODOk4pAPbQZRAweMLxEptdC0dOAn1k9yfH/9cHjx3ACn3zmExXW+V0ie fHIeY+7uQ/O8ZOogltfNrMk14TmRT7ozjoalV7nteJ4SlZSfqaRsKylPqQTpMqaAeHMijSd6 M1HX+4+N7KrowXw1nZ1PqYkezFfT6bSaTuet6cPxlJrowXw17R39kl0TPZivpt2zD8ROZVcm z+ar7/D0wtn5BuXvrqsY2LqlhQOPiAM5bf5YloR2Cvb7xCakuudrTON4ysqkB7PUlPWqBNHN sEPffWhm10APFv14s3Hw22xfb/4+5ev0YPav0xR6x61HAXA0zpycRI7NIFTlcbPwUXDH14jx CVymbu5UXUWTqqtUrJc5VZdb3Zk49guUkJDwsA2lHETygqaSjH8z2FAMUan/ThofmzhnHsOx 8U3HoWLUPc7SwzmZPAgnT11OhDcnhW+cH882g5e0/bLrwJP5NsLlfvMvU+qiJ8/Xpf7kKGzQ ANN6htSm59BdhXA1yYod8ZoY8ZERr91RB9M1XWOwtKjCIDVv0uTs/BJfnWB308udw0vWmZeL aDso4/ujvbxXLumfFxeHJ/Rn2f55+uEJMvbc9GWTvgXW2sH5zvwvnTeg1J77tSYcveZ96bh5 MNvaowmww/lV0BddiUi5RqOkSW7bEnHbab7fuKKy0LVaKlXjAByrPOZPAPncSFxOULsaVHFD swsZ/xZRG0kG+lujbi/GxYdEkMI7m5qlVCUJcAPOsPXYnkgdDlRSRQ5hkxaC9kpBgDuvW+1u rzt6NJneAfeNGC01eyJToiBBAc6z3R22x3eAJ2gH0TbUi1GAs/e6172LJDeBQR83XL5kCP3O eFEgith4inAnLEAO/Bw4wA7AqcpcZwmOrvKCxInlZ9QD30s+qqU4PGUG7QDHUcRy//emIcZr LRhZHZTaT8WU76j2sMzawxZg1Dk+UGJVBfVSlYZEXiQwpbJWXquwtQe/qtPNrrSCElZX/js2 pZYYQbKyVU0nPskoWNuqIPwyEUS/LtGFcsX6YbRYDphnRT8d2lf0R17kL7FPGXGTdVQR242w DnYRcS5HJkbsb3BJGWksoD4TWxYWgsTXixOLuk+ECtneluSu4qNkWEAUuxmT6LY/uh0i0zK1 Q5GnthU+nVPmir5E0YDuW4+s2J+ohD41bz3sLILnbeIMIuEgVCZt3Ug/h4yUjZTjzhPwpi1+ 20KTFIAsIYH6DIruXewcoEkwwK8Z4qJIaKUYCU0akBx9jOA9dSrM27BLzRsz4Kx8CjnfYmMO VxEw0LWwzIhhk1CkAr0xwv12j5Pm3Qcq0e5IhchhbhCXvhNEDPDhxih9HbJjBK/0eBl4Jls9 j07AbkPoP0+sdYHRQZYUH/bmiKN7TAoNnT+GwkfLORyvPdLGC2HJmFGDZy8DKiF6enUCkc6l WzZQzDCqu57RREfWfgIyMAh7PR9hZLAjEo0egwzwhAMqYuJZhjuMf3Fq35iWVW/Sl4Ohep99 CyfF3V3QQZpjH4hsTpBrJ1S9YanKWej4Rz0ZuaTe+d97vVYkfiniQgMtdTIERvV/h9fegy/q JfEEYPcFAEbkOVEYKDuOB84ELOf48j571GDhQkNEvUQ0HMd0gqtus0mkI+t5LWdxUbyi5Q9F X9PpRswYpr4vGT8yEiKr7s9sXE5OMgw4yTNS18vOsHkJWiPmCIF2y0ohCUAuFHohgvaIEugJ 9cBYibBnJ1qxnOClLQCS56nHOPT77Mf6xtNJjR/wNN60aVMmS/Ct2KSx13j34cAnQfv8VMMD SgJMu16sJBynHPWyaNM0rRASILAoFFyNOTBAAP7N4rLmXWRX5oFDbJIw3uFAJ0H9E4hXIDKZ 4Fu/T0NFG8/K770JwOacE0wqPl6/dfu33SvwTNq4XKIXjBPHsQ5iUuYMOHFHxLmGVspnHGXI jIRZ+dkNdYCdAR5kbMpi8MLc1GMYv7qhexCbOzMcxZlFsw7jck0gbcoGrG2J4Tjbg0dvmSh8 /y7vDbwCXTV2JPT+kL8/mU0OVfFE4ElW2AlHCRn0zEEriu47AL+J44ZCA7I8TzALwzbe5yTN LqwhS9b5VfBGNLqLTWTCwJY4cbBeuc/hH72gb3vkAcbviIRxEt15rfKswxKna20p1bbJds3R 14meZvWT+UPTTeN1/ddX/xH99RWdUtheLWDoALgAyIlo8Ku8FyYxpGsV8VGXq062Z/1fjDfH f3N3cab9J379AAt+NIryoH3t1rDDLrKc4kJCZsd82v43jc27MXtd6GucmB2sNr+PIBWqnV/W L/SYYHcd63TLIyGBhJ6e7AN3yLOcx5emeI8vZYalucsrywV7aaoP9lKsYJE5WFIKNDAPxRG7 vLm5yQAJ5oeQQ5gK/BF7oMCDYyIqhnnR2UMrTD0IGhOPEHX80L/M8zmdYm0whbr2Lv+3/VLO e+0V19fXE76b2mrJAF5hMqJX6bXxKxBrcNE69EbQxt1B+MlCDp4HYUPjyaXCl4Q9pKOZuU+V ukAPVKycu5SImXz3G4I6rvK2o0GMPZQz9EgEQae/uNMJ1XzWEdwwE/SyJNqkKes8e1UyYZDT yzYoRrjK2bULwriUChHPeAHh4tr9de2+jSngmqZVkTkIXJs61JsY9OfesLMp36Petr3lH/7a /8F5JGOUuX+zdy8rSJacsTIwCBC5njiCgXmZCquO780Qv55VOBuhsyReUaU0QudPkkUIwJsJ V2R4+XOGzymuxYX/C7A73Q7/dNca3cooTJ2t1ETNOkczTE9po7JhIu02HPEFLk69a85BgSgv AG2bG8kQUw4baAF71D7H3ryiBf15W/W2Imt8EAct1dokmFsjiZhUiyYtlCrR3MRjvUdskmXG C07GcuZsqA8sxCIJswYkShqy1FUmW+ajyvF2LG24asiZfPsBPEutS0yYuTXLpE2WzYZsLK+L TkOudt5MKNhQMtTt7+w2BIOaxEGkoaCh+KBYhNRoyW0W9sai6r03cU1G6lbwTpsDllOEPXIs 1X67h9Cha/g4S4ILOEoir+745tbgCGECusorITStG/RH80RIQfJY7nb4mPW6yGe1IwkHftNx ktwZOTxEsrek45DLinBH3ng754399NuK1SCjKsjzerWHw1cXunBmEMIEzHhRpSWOLB/l0/Cn 6rY4OapdSPueNhg6Lu3dVSC5FEWTy1OMCFoZ3amLE7BCiaUpN9zFVlrfKm9sgSYkF+ZkyYxl WalVWAbRq1mW14W3rd7gtvVHF7IISTDEY9HvidQBy0mtCAcmJZ+dXBx8OEzeP2n6h8dnwETa Pd3JzbiyHhjyRGCWuGkCSzT73Mb5CAz40vRBJyKVGnW5Mws9mCiaOe4b6xy+KReMunqzDlv3 /jAEnhSq8a+6oztgBBkBTqHZVu7zxruKod3wirdC/zH+rgEJegFSxz2pYXNKpTUSyYAEVM90 BV4Go4CVw1+6UZc3o6Yphp7hS9QG/BjH71valNw16KFFY31m8Y8eGBXcnQhza5aZmCybORWb zF5uxjYkWu6Ape6Fw+iP4qe1QfchwKkKVf/NUIG5k6VKcSnEBttSM67ty1/HJMPucl0GKuiS OKDm2dHO71jnec/c3D09Oj0/3jmTu04b8l7ZJcGMz+V1iQCv08UhtaIDrQmQhlxjHoLru2lH f3TZwZVZCXgsBMhc8WS7hADwPUaiBxU+2N23g5H3Xj/ctL/MH7RqhDXuyktkNB6WQgGD8laO p0IBnM/l/jCY3r94RD69CNkDYQn4Gq6Ft32kb3kjleP3thvNLq63rVErZwPREDVpE2Xw4qOF iQr+KMmlLJeKXKpyqcmlHivIZs7GBVWoHy94HXfdUT5TqfgpjVSeDzwiShisvPeQ9x75D4Zj VGBgsedKDjUBIgmv49w5OW9FwUMkOKOc9PlPARHPgTnHLCDVbOXpikTOV6qJzFlKTk0X5aBh i/UK//cN95Dxh51n6PnreFjgQTEHgrCaG2Su0z7UU5ujiwd/mNWjJzl3q1ZJ4CNI5Ct/wq4y 7ZCz8uYJIucG4bx4ehzyolVxFTVFnoNp5P5m9JnY2oTB196aQdGcXXZS01zbFNDDzWIqvFpR Dy9+IWK2d9C4AAEA3/I9xyz5Vzf4g+f/JgnjSNx3W9LvzD71fyajBOirFanyYPS5OXrsBbs0 kpjolZto9Kh5ZrjhdYsl6PI0X+cHEnFbbdBD1ssspMglgQz9UHg7GnUHfu+ql3Pnc8b+GgRs CyGk4NsfLvb9DQezELui27nh+Hp3KtzPi4GIWCEoVUeffXmBt6byR8tZr8qznFKYddku67Wk sUgIFjFYuFL9w+C/1vi3JY0CLUtF5IeWsYCzi1CnUio5kKzCi9PTo4vDMxPwsF4Xja5eE3BH D77G3K48CPSu/Ml7c+3BNj01EosfpjLqDKTKUmuq5jwxjOHIf9DrY/pFnq7olt6GCPXMZC2o SzWbQ2j++gbbv+USz3Z6pLLHR9tOO/OjYb957T359vbCw8qjcwvcksTIULU5F4YF7b/xQ5aW ee0LIT7wT9/978auvpD3XqnjQmE0eqVoTeviDLC+uZk4KQz1EffCyFuJzC/ZZuZPOQPDoa+I s8tyjbvBXTEt44BS8yo1h2oqBH2I8YVRGPZowKJXee/i/EPDPTC8+FRaCKNmGJh8Mg44TbG4 Lk4QxXXb8RvNb+HddD7TgPELPNFMg1Zu7jtB1J6Hf+JKuS4MW+ez/1Aqmb3SC8PP4wGPnUJR 0xRqEX32YB90Bo/gpef7x801upFiSZ0+SsmJtp3CrGIyOWJWV563/Jr/XAwkTgmafMFFpSpp 1tiSzRqbjh8U9NI5RzqGVr30G8fvGnt7kpXZwVeVz9fVW7FeSgwFk/zbq/Ah524+avxoGD6a RwlG/v6aBL3OlOLybHtBgPMEn2TG/indodiMvi5+6OjGqGxKWKX5oUhFrycJHLh2ok39USTm FMPFx/dzuRiV+cWHS8THOiCRh49SvaGJIm3GLNvpB6RajBm3mbeOgDu+djrm4eJf91o3UQJE f+pQMCiE+eOJN+J66Y34j+2XouGXqqV19SMwgNl/JjdHkql9wdw83PiaBllZYjD+Wd8wd4H0 cXAOB2f/7PCyccTff3mP64AZhAZDfyS4IVYjN2HP+419K1cAI5rIbNQaKq9p+KcbIsitXnhj JL6O4zSRfpjzBk5apHmk6k6HJOJs0iGPEiXZObrbke1EB2oUjoftwFdDgVvEnjsS3Q7/JPF+ 40L4U3lm5/m4PwyukwUWoSIJS3Vpc70ivnX44aZlYOty0PM7AkMoBI4GllkJGF1hSWJzkvW3 S6qRzy7enzd29nJstTZPfMR0nl8cH57kjD+eQdcQpSMgzEnKftSsaBEH4xiwiBiHTr1jD44O 3+0imM9TN00gP15xjsVetz9+ENSACJ6ltIVtNORBH+6gLMeKe+yQVYWAK2mz8izSyvR9a0+x wB4W1qOQBvVIQHq4CB0WasMZg+2p+e8MREcCoMOJEXCHWIJU0tIpZ0nym40jYi0PT0/8k8bH +ASmiUTuUh+BuTybsl+gRlY8uaLgyZU2N4t2XbiygE0eT7LDK4lBQkVSj0WQSK2ieGPClQ+U 6D5nTZjzL59n4E2yxk58GlmSSDRNZNfzRvPs9ISkudNfjAINTOHyCtZ5jvrqAu4Jfmq5WC0n Nk5iw7j2MWhaYhS+Rfv8L70EiZ1VJpXVSrq5zJz3g3sZ1OVXZ104g/OQkCwxI4PgDP7GhqId 1us6+LOsT/qasz49719wVT69GkUHxfoG2s6yy09PLvzd96enzca5KmIl53WlUknCERI/cxf0 x1etoREcqBMpbcygNeQwkYmyKf1ZcZsjSBSrgBsNogwXhcEg6EesvDfJaJikdmID1NocufjM tBJXT42jZ9GoBfsXuv7u9JJb+gUPtZl5b6LpU/nK/Z2jJsmweilaRfa6jl8tKXloQojGyYd3 O+f++8bhwXvROKb0SZbvkjt+yA0Z3WoGm47NzjKvUWVCDKhUNkWDXKnXU9q/yQlchIV0GXxk KiJehLaz4WcwB7u0/HYOT5Co4PmZcDQFmjxJn7PnQ5f4ck5VTUvQi26haLqCrzfslx05vOXL YotXy4Bgb9KkJZP8TC72N1ZIe3IqizPP4As54grcgdD0jVLJmTyLgKGfYjwK2pw0AwyFy9tU IpB4As4R3UlUTuy4IssJDqqp7c84JDirpU9MO09T/OXIfpm2cgg0Eokq6vXAPdGubgajxF4T DBNuuzQPUz1SeH/3XURP9ENxCbYgUhs1mVpJyeOOD89NZuWxMuKpyXlCnv/qzBOnh6mL7ala L9VmsD4smCxKquSp3DOZP8685VLe+w0qNx/LmBjgEaNhDW+AO0yl4EGX1JpU6xtVaW1tPZ3z 6nsNVNgP/gvgX8ujKwRCkVQM2wWcE+iSy83wgkTaaLPykJptG7vAOZjMMrmQTiWlUalucK4y pAfdSClBZyS1c2YVRNhGILbPUQAjKALKWKCLLBYqOu5h3QEui/PA7UuGtepmqSit3ahkZSOM BVVNQ3ZlUtzxIG+7Ge+7EZ98ASRc6CTY/TcmtCxtLqK7loxkiKZlTw9zTJt+OaSz20dLpYAz 87Qine0ODyy8m9VECdzturwAauQD3dSXyOvB/gOm3zkdUt2Jm6Vaih48uwBeSqurmzXZV5vl 9RQVeJDl74wWGyAzRiHJQZVmV0RYzTzL/1k1J+xF2ppu32dd6HdzneC37gmufa+vS9+rSfsr ZEiGp7BT6EOpFjl0cKaJmU9RXXomZ1j3rpX0BNMbiUxW1a1ScatcTdmjM0pm5LFCDDsShhXd VHdmzRYKV3fIuXctcZbGOf/P2SOdYP1XJzLf5FjpDB5BFWjH3c0X4jRxmq0XGUBWr5rgSA2n D+azcgNyUFdDNK3h1JbRO3GhWZ0Cu3ewJV8eBKNDDPcUJ55B94G+wuBi9L9EilAbFfDf9OQv Z1wwkRcPn/gmJ5BXKG2nvJOjcU+GQYnhg8+LxqcN6UubRX5MNBiY968hClLhG/055+Lnjsnn 00bOyz3RSOpwcu81tKYkuQxL1WyXnG/icojAzxm8ztBnnsvYYnh5Nn5yDcgrcE6Kx64Y/8+E pyTG2vRc5CK5yCpPeCoTDwUdyuMg4HRVdCW6Sf+1oJz4wxd88Dezk2rrzAf1tSwMVBRtewP6 H+IJxf1Hp9A4968M5Ot5t2GqiKuLe0e9nMrZ+J1oL7bmJ6Cu80ipUt5gO4RcJ6BaaZ2zs3RX psm4ODGns3JtPVrl8Yrsuz9ndg926vZLQkowxyX53xyuwnEW6FJVcQiqG2kmYUrSbcA8hwpN bPeB5n0WiC8sNPH7ugo0dv8bZXtO5GMTZpsOshEStfOhIZGXIgbpVf3lV1fF3hbhYJV8rJE5 Wr9RxubSekkc9eVqwVoOr5nVuxYfUaGDNFT94F7XAWR5dawfJdDNmfS/OHRPDhBOXWKW5SBo Q/MU3caluAGmgKysRBWwobQ6PjATNTku3xRSgEf2LT7EbT478UdYdzNpe94gjEYGcXjiky+Z C5s4GPDmYwaVOzw+YPAMaHShMYFBiZafwFb8Zz+8/yGRcqioKYdi1k09YtTv6k2GP7BkgxNX kRV1GYnLNXfPG40Th3/7Zp7rktBrQLzHT7E9Wm68IVnsukWn3x7+PL1uph1ZRC0smju9ZlAz Nd6ZY9tbvuQD6Gw09B4c6vWNDkZmkl1mJGGiiYEpNInMuiaRWU9mh0oVZi9tOhW3/+fPcIcp m/0UNy+xk3H6DJ84vFHhk97dN8ZXplopldgFwvxwdH/+f8E732c3e3F05Z8Of9dmJk5A0/t0 CtG6cIq3ucXxSwkM2DlIFeqJly5HC9CdePVObinnXZS2MQp8tc+c6AOT6zLd5EX6OS+RSpmC EsmGE2fbsC3MzEa9Vme7jfnhCJN0egWonrkBzo65XMwLUdZFwr91paSZYGrDKRCQPlbKJvzR 6xDz5vTEJOBeXf18Hc17UjvnhrL5drucKds/d7DFlL7FBbJJXsaiWVwZbWULp2s6V+uVusQ7 VepZGqwk5XxBjr4LwXaB5oTYKqmWuWjbpGCQ0A3NKEI6PcprjzQXs/khcfm84Awsxm6rD+YG jblUdia89v7zP6IftmVHRpJABYWQPYWmpPMqTvzG3xR2xGSCfpk37BObi56cAMFLmdhbk+nL EFyEfo1HAQtPmkG31Y8YxivOriddpO8MA6KZxMx25okdfYrvmYt3T3X24P1p84LW9+HZxVPR Zp+Dx6uwNey42p74XkLhU9kq1beK6YDL7MJZucs38+wjY0WK7Bj7VRObzv0WNKHDk6PDk4bX uLxonJ/oX/S+Fvyl8fu7053zvSnF3A9Fo043xHfE65/1OHDeMZmuaPB+MwBgvH/cPGJbanHl RdMv/D0Yhph1yzSoUBRnyFEAcZvWY5XePAujLmOkz/UmMV89YsJ6gSizs9mU7bhx3DbFUu2b 2u3XGIFuiHAVQbq18FeBp7gMJJJQK9vIUSZoWrqis74+CBiOjY39JkL+CxJ8cMIa7PDlKa9A y6s/FRQzyq0pBGAg4fF3rTb1hI81jfJGqjFkMQmvp7XEIvim6qa+DFrDFgI585KRqDNuS34n 9mSE8S1EAPmj3ANV4HpEJoymfo/WycSnpPOi2+VKxN8qDJ2RNC8pKuk2L5BnZ4/zurWIAtks TXY21xT6cNrg6TJMLKaJRnjOznq357/7sL/fOPc5nr1a3Kwb9xHRqZRpP1sehPHjOL4eeAbw DpOIfm4HffsjIzmZkSCpRJKUBepUFnIdN0EfWXdoSu67AEATRYlkN1pTXEDYW4C7AN2HqBkM JIOEnfe6nwNvPwp6UPhzBXlrMo3GQ00528r4BO1Bni3TCq4cG4PDz+Cy3WpTq+PsWc8V/G6V i+0fXh43tmJ0c0OIWUOSTLcFwRSQq3b7mOmS2T0c/RB5wYPCjFKvoJTLK6BBXl9utzjPrsAg XOH8GhKB4Pd/MNX9YJg50BdXs8dLjRrks5FSvOR5iLaVRGKBxSKzZkTkuZe1KiN5H9iEhrIQ UOqSNuHwC8ZFzNObYp1et4eChcICtoPk3VMp26RCZwVcKE6Isk9DDxiMtJKHXRpX2MMVu1PW GHVpt4Cg68ORwepqI3eTIESoV0QnFLVUgiKvxTiESRcm4SP85u/Ni8YxOzJ9bwvAsWin+fvJ rt/4rXFy0cwhWWUshSZejbfa2enRkb9/ei4HvRPlxnKaYPxVSwaehkZp34CQMJsHjF1zEluU Bkb264ceJ0ZaZoQGpi05nXQ3jdfyinmdMW99YKHnvGU8Ew7MyUbJnlmM0W2YEFPMrfEmSNNJ Tk+1wpkHncKmRhy6vmYxW04WcVcnfxz7y3/w4Z2CNFV3NGHLg9EQOK7+KJ8ov6IWONHiVCsp zcCH5s47uHiKkjIrsZn0wUKSp3Nt9UM3ubRbgabKiteUGabVp0shD43T+WQ+SA8ezj7DniLx lB2N9JBxWZvBS+BN7ehmTRcfXOIZ5neR59OUYrZf4lg2bBDmdy5qneAwino3zcmYFD2sNR4P PMV49SzGq9jO4fDGcLpExJLwlMqcEJ2XEKEESnQKbNJCOWeoaBKGY+M/yjqCuztYntg9nMGy V1cNykqpLkjbpUqy2x9MkkPprDsIAqaJ2wZHc7KfBq8n7hTkigGR9TUiU4Ybo1VQgFuEpi/I rFlGQgOqJwajkC0zPZOMUzF1l38dmQGJBTF1eK/WiywElqo14zrq4s8ompIDm9Tko1hS3/Jh a2GLs1gGgP9ETKDzjMI6yQiIADnCed4G0DGfQXCdvJL5YKhiQHThfWHw7qHAuY8yT33AdvzQ A+jhg8cOVFG8VKmCQ2U9W95NGHa8bido/ZyGamLx+UxZ3azDM8c2Z5wUMFdNLUYnOI8VsOmG gmRXWEqwMk++rBOVgIUyO7UrnL9xHlBWv2DcB/mMBlBDNxxHml8c8xon7lRheOT4HNqDnctP uJ8Y96ffeuN2tyP0Gj4One5w9MhxQNZVXmxom5sGwFDUzQyufB0aKlxSqqQ6ZtnqmcKQZrMz zXgSfPb7+xZD3MYf0r0zedCZtKE34dUVU+0Jf6cLBve3TnnX7jHNvZF01UQVDo8b56CU4ho2 CnUkiMYyhGUcr5kcBGtC1DwCK3zJOdFPWWjVTiY8azCaJs+wtVbLpMQD59lXGYnMAmmNRJK7 sd6JlWpV8S4S7miHnG0FyTlohWEOAKvAupkWMbMj0FnswTxK/fAFUOhCS8SzjIZ2q5BzTGad YReT9RJzGR81xqOwrZZFg357+YFhO9s57yev+FAqFnPGB7qoPtCu74ANlLvujaPbuHUv94WF jwJWTqW6uZG3mY0bvQjQYdcec6OSHoKjpJTyCRA6hi+++52sDu/96dGeL4nMoPzSw3N5dEsE gl1HsVqux0MgtytlzqVR/JnF7vYn9xKz7dFoIH7vgWFWqEp+X8WKuFGaVgKMbTS+iqBr6yck jkjWCBDHRPxvDfHtZTRdoXODDisYVHZLNHF6c55qikDYP9ecaU1RH36ldZ+vOmqG9nlSlLLf hiQGLhtwYesuwDtWWrMiU6mrQMyrlVp9UxeBxd8UAV2rjQW4N9JeiavjW+IfNcmZgvqxn9Tk o6K6Xlm/0yW7LutVcbCvl+sJ6EYxZydw6yeRwBmj29lvGTj3aGtmvEizcXG800S8CAf2+Oo/ oy0VAEXHn4cbu75Z4RDLyvp6LdFacDEcNoHviKzI6d5vWl2GJJTZ1lVDcx30mZeVjJ4kjzte nq12O6Axg7XfZG1GLYnTc9zHvPuOUGb2fSFLcnFBIydzUE1JTOkmpZwxT1K2MJTLSmx5eJpO l7T0Nc2YiLgxEPC0DNU9gMBpd5lRjWK/9rpqDqqGNV/CIe7r5NjcxQoQsiyW0oK4xYBJymsI dHHChyR1KmJNYmdeBwD6JyETRyluyB6lGxjhbE5haZJNSNmMdk9PmljuiEuFJKfCiNJSdV9a r67nqyVvtb5eLtk1udLqdOCrb5xefmPBkFkq6FUnJGqJ7DacSoGTqVJHAeGo6dkTHcgb1feN OPB4kgZ85+j8mLEeAwxva2jEse8KTMMKyQ4Lr1b4c+qazWDg0kxKOlYvz3tMcLzjItMi99Ip 3m0l3IS4zGzBe6/Np+MXMyf+qUpjomQqS2ZcFTQ0O2IpvZDE+15eXsrhZfPLcAKOZfkaGisK HGZu0+Ob1+ZBVJp4QVFQb3rhFfGkrf7jXcg6wqMAakeklQo4TZBqxmkGcb/Vu289cp7VhHSe tZVm5U3/edOOJfwvPfGp/CHTP4b8vMxd4xzyjKL+4+HF7ntfuT1RkwpXoUl8RPbmGul08YVz aQfWJtttB6rIvrfmIKnAza1T3yhu8kFJ1CmRh+zYKtn7YcLmJDGNoqsA7TQmJyZQWnWmUu7/ BjKRzds5qDMvWDmrM31AYRaT2cL/1Lksb3Icdn29XjLmHM6S1OqwOUzsNEQQlOfRkFX5HtJd DIz1Q5T0Kj9oDqi4aaKfkTg1D+e1ERYal2eN3YvGnmP1UF015t5EuRH3C2iDSDJFeZwv/U5V jmuSq5raDP5Tour647srpPW69qxqHKrSiBd/HidaocR2Nsgcq/bl+d/1jH2PpaurlmhTOQeW Jt3BSDomhYQ+/bvCFIX6d6t4upp1pqqwTzPMjIOTMXCE9CSedbesb9Rq7C5UX9+gH2nkK6kh gWGVIWAwKwr+ArzS6tJ0HeuqJoExuTwylQM2bYiAr6+q6nDVbQSTLzrzDkmwtl9PYm3Z22uc 7+eNd3IqVC8RfKk+HpKPFjqY/cPTE462R3B1uz/qbUvm0ahl4DN4Ybr6PS8GrSySjL/cZ75r ZYQgleT5mSPhmLZp3GIdk8XfFsWqTPLqG5mrxAReS41IC5BLdXrknf6SXH2xR4GsjQ3BVtwo 1Scw0ew/XtjKT3vDFsv6dIT0TYq3e2qvFXwyawBe6uBnzzsLhrdQc4d9m86Ztdp2Skxq9cxa OF0NTjR47HKVE5OktBYHGcArB7Br5ZiIv/9wxgz5kpIyEiA7YwRducnLqRDJB8Vcaoh1PMF0 HUY2raXEVPuWNHLWANCln9nQiGKRKSSg5LLzbT4QdkEpkRxToVN0vVSs5dcrk/62KmlzboEJ ElB4Socn8YyTOzDlqgC/jdUp564u21JadebSnek60mS5bFGIR1YpaSTMJM6G8LNdt1hi8drF +CUUZMK2yAofeb0W0IlQMu+12KzV7V9DlA04fRm/XtSPySECvpkYFUvk9YQzAu6ERlu6o77V Jn+ESnWrMfqiVeoYQTQ9D8/qsfUF5XOyloFwAJ3QTzuf6AywKjj52ZzMzJ9mgiZXR9FO3pRP rhp482mf5ZEAOV9lSxmd9mAh4vPUnTzdJeE9UxNJVXtERPwozzVBXUbNCtl4zdYiLsFCyj3g oYaBRNHzJ8zSdxNBrsLbheZhdTKtIhYn10eD8qdkCJ5iSZBidkylESK0iAp82hyr47hBt5YX f7Lvic6ldQU3By5rRq3BIEopDyz1JDm8Vl8F+UqBYYfVS0jUtNahhA1qRDDZwUFmkJY712J5 VTuCzL0lHVH6nNwUanj1JQDDJq3YEYlP350yANssauiWHoUh3FZIBqD2SsrYVZYfNXRI1onA F4hFVU5jPriZGNh5NXpb9m8huWZVcnj0uaV4X3Y2Wsxp0jzxLxwPORWpFw74wmKQZD5rcRpI rofGik+49FxqqhflSp9aXJZ5+zM7nee0ZVbgcK25dk5ql8y+G6aYgJ9ueDF2Nc06LhLOD/qh WFH8pA/F84eZBJFm25piCTH5EQmN43Sm6u9ZrOfLNRy2GyUDJpw4bGd0+TDN1c4xoES374vo pskln+y40AXzNeuloV+Z6f2ke7M7E7GXahO6mnA8jILeF+SnFmnWSErJVEaSYzCRUTh5zooz YVdMK65bLG8NVn6zNHbfYoknYZtX2hOYvOHidaqbFfs0b2HpWlE0vrPJWGX7sreywB8AcI3f TjaOlz+M28bVV/gGye5mdZXGRV6GQZhHUVuanaPjbWbiWf3ltGPZ6G6goSl85/2b5NgGRp5W bf0ZrUJlvbxpQMhN1OUSQl11zcMpJXvfLWVrR5ayGWHWZiRMONlLHcsc1pGkzmDJMq4VBtyh 1q6XssLEzNpGoskXbB/n9dn3TPIloVjaOMHc1R5U2LtnHTmUjFLdBh47dTwVeexMkPfWhttJ GsEnNVImGx50KL6T695kIRQx4Y5EJNFHja/ZgKHAs/SnwXOvVOuCj14pVl1XnFS9SirVFMiN y9aFLWWqwQYAfuWIhKUFVGD03U6Y6Bi1bk0zY0jVpje1dZ6TivV0lNjQeJgLBduNJRVP0pPA nuhLc2nSYuAiG7lbrNUlTW2xVqql8WVf7lJgkme+zPxPG0Led0C3vn43EQ1tAuFLxfVaNV8G JGVxHYdhKSn0W28eoJxoSiNvNHpMSkHTvI+oDUYaLrxVxzZG5FmjKoCpMojdiAsJGSNlYp72 rJTyeph2eBtS+JJjO1nHPAf2xJsaWq9eWEbHQY0ftz/bNFL/qQbvAhQ/P+D5aIgssCPw7p+D YAAXwfZn7r/6I8SMIRvu4eTMZ6CmXItjkeireMZqHDZOcy1qoOZ39TtsU7dZvZsBLAc3/16v bdT0tHRcdolUtsUKL1ac2K0VT22IwWQx40NOzRnSiQ/n525kcyi6kQ4q7aEz0SDsR6xRhSu3 3aPrkiWIflQc6Dpi0gts4oUbPS070Qb/LbzSsJqWzVqeWkOFKS67361me+lS23SaNaGsdcPi g6a9HTd0syT5K4vrVQYLtvYSx5bXCVja4eCIK3jPf+lGqrW8G/dG3QLtI+MXnwAFyDABA5ZS 4Ts7Pt5bfvVjJ/jyI/18NYEtJisT3AF7CDGSQ8p9l86DcTSJ7wA+owXUuWCo7ycTStMw3F2P e15nzJOHmUEEJsLo2vwyze7hj6dx/EZCp5eJ0/oSU87Jxby2nKKjzVJPwokpX10SjfcLhlF1 4i19W4IVZhxFfTd7JFeXsoZR72aOoT57YgBXl+YavSyvt2jUob3vggWhhS3Yhh8jHwm7RX0i u0fg6mjzwA+97uRRMFkrj5t7p03njJr2GQ5tmPzKbMa3CScie9oKk+wkXihubNTFQ7q4US0a qPYlwA6cnZ9WqWEthGsJJBmxdfyXGN19TmMq0bBy3+RKJiFj1HowyUC1hl4Hx9FAfZr2zZH0 K0hB7A4si1ODkHb2dw6pP/8pJw2ktz7kLHXdyosMaAhSF0rsVud7q7y+6fmM1AL4fzRBPvzh hHvm+FO5o8IjgxbAGdEcTXLaiG4KSiIo0Cc0+thzE8Qtpwmo02dL7A6G11ZXJ5+/8SpikMEZ Zd6ZJJ4/eyVva7L6VWO9yviwOQP14+73EoaEP9OWhQmPttJ2ukjCGc6iX8tC2yxWOKy2uFGr x06fKRhOULA5F/eqnNKne6dbHO/VC/s3f7sbiEeBntccsCHmWO+kqa6R0LMzdbsx6rbraxc9 WFBqvSiA+QfaxdDjACgXl56WwdmQNsNV71GUCq0RIIKoNiw294wctLodY4jSdDtgiCYcuqG4 0AErKcuwUV9PG71MgKjbFWUPOaTwY6UcOyr0bUjXSdPm0Zr4LjxwgvZtGKvyvekhPCVz2DwR 5JM+fbbdpE+G3dgsE3Nf5l5uOMAefIKByTesK7UO0Qjx2ieSAa2Bz6ppwyfsx7eIsjgx+fMT THirDGV0DdugTWHZQzTbvMCuAuQU1fzP3ejWMjyi1pscaYPyNmkG49Mn28UujSXPKcB3heAi TDjqctInh0PldsYzYpctkU52XV7CgvfUpZEavaP+UkxoeddwKpF08yXQxNkXeuz3iGGPwxCn eoQdS0TsWyJcHFiOcI3xEKp24iL6Xdd/pzBTkEDaNpF2S5o97MWJs5g38sVYmiRix4S/MGwV gnseUw+mNyKv+ZA0wWapVF5fTzAS01bOU1YhMbA+aYCdZmIzgWQSGabmSKwRNxitpJYR9SGR 0YmNJKLgHEYj07eayTW1mSRsAG2TzTQhRbDcFwXG4hO7wjOHGo14yTsEMgQ+jPHIUd+wCF7y 6oHY8rhyuUPLDeAatOxZ5k3QWXnF4uZywwYkLtp4OED+5dV7Wt0LpZEOd2B55QvrDySBjsq6 9L0JXcAIRqjuKAaxnqGSKZK9rcvxWmESSR1TGcAkS6F6W+IQBwVJuzUwsP4SxuzUkFC8qDIl oX2Z6sT9LMDHbQbAx22M2VH0ikgZulVcnwbwkSxc2yoWt+iHk2JUgkRrNtdZ8ID9KOGlKU9v E4GaLEKL/ukSgVSRplsa+1pwy2Z4TdHhqiXA/mUW8JwCup+lQT7vjMxWKQRjMtQ5oz7me8eB OXqstXRgSz8xh3etQQqihe/MkBB8smhmPvBSdV1w+eQq0a5LS2K3oJ0K+CuDGADNkKgJiXnF UX4VflFcByN+rimezw4P0TCI398WgAJYcmirjYccbijxr7ScD04+/HiEtEPeH7/sNz/xgbW0 lALqXZpE6V3qB/ci0L0xjV3mC1TmUoLdN7RUTppn4CGLCg9ZtPCQS5aHlp/tuzufc9Jz/mr8 2pZHX9G+CSjhpczg2mQbDI4j3PW1TgfaEXWre8m0ZYEz0N3W8nc8z3XA8FQrW7VaakmkCmI7 V7cq9a2Ki9dTRvzLqsVMTYDotIaC1pO4CY3Y5F1iWXBzNb553Qtbo1RB2h9M8lO3e9277khu GmjSdRZ3qkheowe4Iihc7h+d7lz4ezsXO8hCsVwkMU7uAcuq8Ha8xonMtryMu7mJauB6CCCm PtWUUcsbmkYwKGyqPw4j+EjCftoP71sdHFbQ6R42Gg2PewuSwLnTVLoOHrXArlcv1mqbfB4N A9A02k8sN0Ua8qgOTF0YcImVPGmdROLmoW602DnI3IUaggcEFqnyZ0/6g0b43IHDkwP/7JR1 UxIuzW3GiQfHOlEqiy/F44A9T+i2QK4E3m6ppBZg329e7O361HSfGu77zBqzLYPOw3swMV1x Mblv9aHcwpbXuGxxBIGsEagm1mi/5eDshIEUAaXsDqUxImcSqxO0iMfGmXnNrdnp94MHb19j 6lJvcglAvPR64iMhyQbg8AFRcqihdxZrKmuQlvePLvzznb3DS+zKMhhY3DneOaFFdnjAN6ve X7HZlwyHywUOT/zG5Zm4ZJZr8XuX5napvJFTAXsnhopBkFW7x4A27LrCnQ4RtM7MAO0Oamxe XIzvAqj+jTGARWRbD6OatqIobHcZl8ZWlunMbwRZ/8Pu+51z/0JFtJBhUzgsDb6xyEV5q7i9 7VHrau0WtHrn8DJ2Ji2TrCmIQG7e1ZbV9ii3pFOtah9mt+A4yYoAq5N3T9enHejiQz8bUMl5 aE0SWYhHWV+0QnF8mpv1gtjBJf73V+l8vcK8T7leNVZYrdGFIoEk83j3pcXB3PfEUjGnMO6D jeNy+/cdbyWL6TGSjbfs1JfAOUn9YTBEEhU93kV+eK0Zk1PDp86S3VHycbKC+9YAKRFUUXnV VV4nkYDy8e4q7EkvNP+H4OJg5dx1orW2jeErl5mWV8oVkwUgY8wsZACnRUn032leApg8kUgl NWKMQJPul0bk+nfEiQRpkJRM39jVJHTLVG8hfl8FzIymmpUIpgn+XEl+UbCLZmAsswqa1D4R 7b7g7wJo5yK6VMoaQVlmE9q0FRtACPKD/hd/0EI+A+B1j9SNAvCI8V9TZkN0QLTGrx5H1BpO eJ/Xuyz1Ofeza/iVcyvCkGV0Xn6LGJhRvHZTCDnXtIB7gkbpA4MBhlPRDhjoodXsF6f6hjuv ZrYw1o+Jk46oBZuNC2IKd44a32m7ug/jgY9cOCl0nUqlXOSdUKmk00S7y7TVceKBOdoV6aaH 3cEojOF/EutavM+fe2fVfUfSZficQ4wV/WODie4tD7odPx6IRKrMs+PJtt4M7uZp5hPFpzLA 0MO5YpHemEEqmiiZKRRVBZZELhPwrezTCwT0oNW+9bGQ58xTMqZhHZGg0s6ztoWatFhuEmNr WTI6zltO49W2KM/58gaDPOOacGRpe29flrZ6She+VR7w2TBUOas7N8NpQ+yn2iB27twgVjl2 V5PX1qA0hFcMTtfRuAcT6B9+CYYaETm6D4efrT5G/Y/a4Okap/vg9K4VBNe2AzfpXj/kQmjI C9OqCGzBAjjaDJY4HCbHSJ9ljl8iEn+xPMnx2PyMKI8trx2jSK3X2L9KLrK3EsFtFvHCJbXE PG3PuCguif4yH0/v5NPdmwNc13aGv+2k/agVJe0HX6UDSBfsrcg3ICPK37nJNNxuKm3ZifrS 9y/O7WA8y160Gb9mJbueRobBo7lUWP6egQinC2bS4No6rxO5WOKl+VYlleIKX2ZPoCRvGUWR n6hreY6lkVwc3AJZ2/ViGW2WS6yJ57xUyZSa8lWf5gppdr+oh6mdTHMHiynZ5ZxXfNhr7Oy9 azT23UyoM3Sfm5Hs9P2XeeGmYSczeUu49TC7unWKc0Okm0UQLPXqcjhKl/eM4v82uOPsMMz5 zw6krdWoiwNUlq04bBnBld9beddieYrx9uLgw6E2Uq1DchU14BTQHNfsOsdycXkmsRpTMRKj OL4CdodBpyc6beu7MXXTRZ0wSuw6uWF3U7Hqlda3KtWtWjpHW7rkFIVwucwSgl5jC7Lr2ll4 i0EWfs1k+x4QLz96olzee/XX/l/7P30429u5aPjvGgeHJ69y8yb6vObj1uPBgdgGIJOEyVF1 u+V17cX6ZsIqdtuTdjlv60/1ZQUZXjTvpetUKEuLKAH7/+mPeDQz2kFLhA7qgDjotmntP/7h 9vjptudeiHT2TO20K/rhyNy77d5QeU5j9/R7ed1NT479w0ylHuP2Pj16npvVc8G8Qc1gZLRn EZSIyHemms5AGcNH1XXCa48pl7W4T929/ei6H63dxbtXb7h7kk7MKp2bpdTuzSiZsXsl1e5q OuPudeFt8DDoddtdTe3OiTbVURwIYKNewPhB/QiaHgTd/T1YKCEvMhuESLvyxx8nzZ0xMCmI A42CM9zlc/cT65s+yZFEI9OXfffut51zb/lS4Ey8ZcQ65O1zqfmpklqKx0Awf+upnJvcSeyl 5e9hTm3fDfRe3ms2YT7wloM+9B4dHqJcbiJTyh/cNe3Qp+1vmaK3LumX6usbE7nqsj47Z2q3 +samgEFsOLDtk9Ozgg/FOROPD08ODW41rZNLm4il8Na6bAhId+4ltGee9cKz8MeXbmCScH2C nnQvbI9hkGx0utSmLU/9osFwO699g8lzAkXW10uMg6NXgxJ80rw439klbh8b6U52XO+R0393 22Ff0hP+c/aS7nOBPmN17lo/IhJJJTjBiOORg/qarHvzRAX3sTu6/XCxvyE3t+yGoPp4L3ya gGboRg3gl16E5pU/lk+aklNmJfdUM3infvr0P7i31jc4G49cYnqgGGyjQKR1Qw4vd/fO5e7/ 5P7fKEvGoHLcxicHUXNkci2yH2iJHdNj2RY8EVvmnqyPl5ORUlk55bLllLmZdFw8UIs01a78 vR0/e0w9e5x9/RtlgH8dEhvOMe9Db/k1cvHYv+mUMFkxO5L1yYc75x3STHBSHfrrLiLGmt+B ZjhA9kVGA2S24xUevJP7r4hL3U/8ed5o+he/nzV82tmHJwfGOb1cFbcJuU7BUEn+uxqLcpX3 3fIff+CzHv5zgh3hxfvvUy4/Q3XcbNPezIYa2XBmofa5EbwKh51As1HnJY+kRiMtF3NxKidq m5TkgmjiO/7zo/5pW3ry4fhd49wMKfIcIKbR/HBED7N6HmghtMeRMuvfv6GpT+1RtjP+hg2x wtvCJF88afq/HTY0R+P8hxQI8GDAXldfiAM8VBTcU3h50YNoy/u90Zx6RmGkfgked/qdU4zD /pBmbMtDkU8v4lMTmhpxaSmpS0upZJflH4NWP2D/0z3a/DfU/C1mrMxfn3T2udjpL5Z7nmF/ xn76d+NodNcatW8nqCY1EkeYNGI47h+HnVZvPxzudYfEQ4TDxy2v0x02uUlbfJ5hIKU3ZQkA qSWAoq+VD0zvJ/mCYRmTG0q7+McfqdXQbBwxApnP9wFmlZ40yfn5aSHtELr+s7Z3K1aocd82 NkVAlatLQExCNcT7nAQPIyKA6jloUZX/k04DGMMKkljth1e5OZXn35k0iT2O/xcWg7MiHtGN GAjH3oo+qWanQTseqW/CoSx31YYvt1ETKnKqhQpLNLifTCjqZknoplynxC0sMNRiGtTBLZdK mqbIkYN23zeoPiGOnP0UuguxI3D6xH6klc46fq3Il1oQE8M/tvW2TXb+Wn5pjlUibNKqarw5 UQmb26znsFutLplkpcXtObOfmw/EJh+7PqV1noNW872M0BlgRTlnukL116ri51FzcB/jUB8Z XKHnRK8f5+Bx2Tcu8mG/H3UHaCU0YFKte5+WKBP3C70xwQBza6StdXHLkKtx7Hs9DMOR/5DX H4+WKDhfiW7D+53R5ZYnZb3f9dcjXIm2vEu2LEAdiPiyOYlCHCxlJ8BRA86m/hPOJ6VB4Dsz 6N0ni2bqEDbKJeFF41XKrJMcwTe9x8EtVuvD39XfksHvvRWDUrAyUVjVz/Ft4iyG3faslWjp ufbmjysSP6sfEsMddx8LSQbCkwzIYJ/0wNkU/nbTYW+l3YW3iLaL/tg/Pbnw9z8cHZ3gFCF5 uHH5yXtjaBgzREmfB+I34o70JdxhNOwhGWnqQW4Rhk2XEVcl5Dk+YCqag7ySQPmzatpoRJwI Mc+v/mPw19G++vTo5GLo9CcdNpL05j86f+2/SvGltgsKG61TNMMMqUaczuHD47Mjf/d093TH CrGIbriw+D2lyroaEdbTRoT5Tgvib6/Z3kJTxKCeuYRdb1N4Dbma4aLD7sAseF6ixWLSBPA8 gbOrzp3wjAXoZW+SP7jGT0/sFeOIxe+azWKZ6rK6d5eT562WK7xtRe2A2zdc42yIkknXK8Ql 4JgRcAj/jyuFHpaPt3wb3dKPzyveH9ITKUMr6hO9GTwM4J254t12fizntm0Yw9c5Zc7pRJCN RAkiKHdmcIKeLDrFL152TzXePLAsK5v4G/uncYomduSSQCaWQ39cmdxidMBIOidjBdwSfm7L w+brBMFgC/trFI2v+BZtNO8ajqHBwB/kAYWP93Qkv7nqyCA40yfi0Bz2jGizpa/jtaiCu9ZI cuxtS6alvPGfAzyc9QZdFw7HogPRsWvd7DBk6pxnHWGesYI5tGaK8mW66DRFfFpKaWBcLYw4 Yq3G/ljJf9N6kvw3T6ee6djTnXtSy+RlaZtSrHac/6Ja5Iw8cnE7nohbfs6OzYTbZ5vyP2Hi nuiTmb9qpSbZ/moZ8zcRgr1Yd/5lpkzOq2riuFI1BfR+rW4fO3qLDepmmy+qA3SDjEtl0dLo D/PpD6D+iAe/DwRZ+bbbkXAh8Nac0Y6z57gwIQjpBnnhNChcTeGb/WNa+eeMxHJCL3CdM81m C8Nv3ah7BfXEyanIGlL84vT06N3Ouf++cXjwniNF5hPPYsBYGVq1vBcdy/tJUxQQ3ormQ33j JXRL3BorF2GYV8x4m5KmI7OLZH+YKth7bIcTyjgnhaYmTHy1xaziwejzB5pkzsjX7eFoAJFk zYCeECUVzUuuaD59NGVtnTTfC1ey/IeOAh+f58Tv7ofDXWJAiD/BXzRBTWQiwG+T/QX/yxl7 QyFWB14cXhw1kt+bMnPPqcUrNelSpRZ3KeEcTweq/5v470CQnXAL23beOAsHAMYVf/yVcR8d 9k3wUWaZHIDSYr+yOcTuQTgYD3yj1OxoZr4Mhepet9ULb85YwbYierY3ntM2AH+hhDKdlbqK HvX6pDnTMuH27cVcr5LqtCojQa3q1aH9nFWUG+cE1LZlyYCr34c3u7UE6196SWoYX51+fpWj U3yU06P8n2TIk9bGCg938J3C+8PwTpd+tGV7NIPhwDXi/YognW7Y38Jvo3at1sTMI1czls/x NUwaBNmZ1pXPCxRnjw76gno9IiBPOiEiLfzwLikLyJ0ZYpwzi9a2SptblbLrirjBXK1cXPkz W4qFr9nxzq5/2vQv/d8a583D0xOOA9s5Ojr92NiD7/XE81LRr8+s3XCtzCpYgEX3ceTabJs5 A0NWF+gTubxQ42p7brFH+At1+UI9/oI0yzgI0GK+FyJHPJZaNdWzZvn1feGt/F7AGex5r6hE xhOJda6vTyAlLJt0hhz9z6oj1OGhOjrZMM0/AFQX4eGeAJiwZ5sX9LrI6efIuN4iDhqbTL3k YjHi4G+1pfHVfY6jpNMYSAwdoOK0OTGLBEpyUxxgOBrSQRSMO6GOvz9YyEHDdQ+TKQJ8Iupa Ml5+gK3ApJrZvEeqNTG7i0yxnpIpBEezdW9adg3iiiglvMmZLx58fv4lGHInfbElUoGcAyG5 oFvX4TViE8N7CY/kOS5wLjTAWMDj/37YBehQ3msNhxz+QmvBAMdyd6xsSLU5q/D4FAng3x9R g/ZPJWZ4yoK0S+XpV9ifzcCGFLIm7Hm12sHJh+ZF40z7TscYp9YWkDTB9JCsNzDEUWd7jLvD gJPgygHGwykvaDb6hn9brwpccTVmdYTLHPfRnH2YZ9XfIGkD5a9aY9o8WjtD5KymxfXSzCCF RJricIPNoqh0i0niZ1RmXN2KqXXCGmiFsJNmbFN2VuE/xc3JvDHFfj2MPd02RWDYLG9OyLsY jj4by+NXJoXJb+QUNQmFt7leZMdXvVr/fXccs23zaXvcbPyVVNTcoVVPnPVh8/Dd4dHhxe+2 SgtaJA+pEDwfJz18ZrHbs4z9aXsxnSYPzgaHl8nlnz40qT4xMYV7S9yRBTyBSuKvpFfj/fbH suN+kTNuSbLpd3thxI5i7CgBegRdI4L3Y30jDvLhHdGemfWcNq6B17jR5uhwaVNrIhmUbD5m RwqZcLLKbc97gMfye2lDoZg2Ks6XLIV64IMyvL6my1ysDjWyF1wDk4ZNZlSD8a4S6BzcfeS7 4pqkEna5lFSDwW+z+3f4bvclwD3yXr/x/nv58gRuICTi/+N38yu3/RJuplQWD1y9ykBk6cX/ OrLLo0ktgxLce6D/5D0xj9A9c4t14u0QqgWAD+Z1f+yeHn04PvE/Hu5dvMesm/tHhycNR7Cf R3UebzNZU9wKeEG9lg+/Rivi5VUpavSIc8LctYafDX8jjBEi8K+TPrRsVzb+s7K5W/120PNj JsCs4wWmoFpSebhUdXRJ6vS50o/Uh+Y5R1D2pNmeNn90yEBpyh4fW94P/xH9wNMkvtjzhPCA PP+hjZrwLP1f+I54HCNFMX/t1adkuEe1XlJzTSnh5DnkQNe1YprQr7TlNFanF/GFQed3W73u FcAgO+dwJR56NzDRbXk31PAxrdArOq0Ht60tr7RW/PQNI16lF5tCQORqCIiCB2kXTMs5Tyda /QFklXvRHNCaOWG7EvUr7sjBu/jxpwUiIPGpn72it8Ugpba1tXIVGJOr5oeMugsOQGtqgknj NiPKHmhEc7qJ/AHnIum17eunyQVz0sSDjtPpXFKWgR7Ne+PUhvK74R2ywPdHSc+xnGsM+Va2 i5Tv2rJiKdDfuQyzBp1c4mxufqRNG7QJP952ISy+vhnSqapL9DVfY6/EqG92MCeWMOZjCaB4 9e//UV4r9x7c/75in041+XLNK17x4RrFZ7350qjw5EBJBgxXpluoT+4/bfMw6Kyke0EbP3UP NGDF9Mubfydl9iae5s0y0K1WzQ9DtYVEYeNP7CaNaZRdNb/TlaXe9BebsHG45eBYW8xxqCc/ A5N2HY77nViB+uc3o3zSFnDah/1O8ABXfJaHckZTC3JB3Sy8HXQfWO/MMUpU1LScLtYHvA/8 nmD4mHhm68h739sPLRIKniB/63XxrFivrzvEWl2VXQZ+77B5drTzu4r5dIzOrefiUFRhC6I2 cCKh38Ms9bsM5tvtR+x86WI6iJOpoh5vfAvdn8NdbGggwEalPKHceSa0EVFm0JjMpLaD3oL6 93TZlR+n0ehpFDrLKSDWH1wFN93+8nWSbs8UIen+WyxYUkZX2ecNJ4LtuX+zRE3OGjmZHI6g 33Gd5hc++746MVTiCqxms01rNuOtZu2WVyA50RxmS2qz0XiAW897mjkGDp69MPw8HgjhMPTS W6bduU+k1H+3s/vLwfnph5M9oybYa+zvfDi64McsQYDEQJr9pDSYjY+caWtofK02lSJsJigC kdEWw9eVi8X6j6USMhAbrH1Naal2cCGufbj6sgY03uvRE9bJJ3dquSg5FPTqxB+LQdUhGfNG ej6h5X/QJHxWKawjVC6KhKxX62Tn6qqMG+QidKlcKq0zS2p+TGL30CmOeCQNa7w4FVWff3Z4 2Tjyf2ct9F3rgW3HnSDqYluQ2Fd4+5jLLab3A8vLgyHSZGsYtHh90gcekf+OQ2lkNp596UlC 4HbEysNeQT/x5KsZDXlheGS5ilBTzIT+cFZeOB7e0IlGMt0tbISDheKMDZI2ZypodTq0I8+G 4Q3Qgel477YRoBDDZzOAO4OFRwFQbduIpW7nFHcQScVTbZKEDAuswFpRhCLzw0Hg/yd0fBjc AYI3q+8MWA/jkGJOP9XV4iJdrVRqJWSWX+UfLm1RL6Q7BPqoxl+ZlWT4QaGknc5KhGwy08hK dHNQT88VWngi/XzBS3+6oPrbb5ZPe8ZTSiDjUnDQNvyDc9kzDq23HKjvmfMCgkqCLwogVy3W xV9xM/az6NsMB9kfmqUNye/9l6KgDCA0q+VlAUu+NsxaZipVicutVNczvESSwxD0RzPruycG S3yXTXaY1mAAmP0+88+lBLtcqRWL0qLNJOMFvuiH6IcYnmcILFuiJb3rTvRH6RPkJsttzOvD H3xBqmlw+NQ0I8+ZVku71IJfqRcTCDUCEKJH2Tl0nf7xzvnB4QnUok0gB7FyUQ558zl4MRst JBXIq2FgxuFV6nMfMPYFsHZhOhp5NY/4ykAyuyikT8sT/oV90qxp2h68FztHrKV12vmTV8tp h8tV6XCpOsEB30OLbo3Djjyk9Uz62X597iyOrnwo2PPU/MG3OQqnhHlX6jVZ8/Vqxpr/A72g 3p2FUVeccgb6y0PWBr3DP7z72xD+iHxZyIRT2aTFDlCIysZmMUaF4JMqzufYjwWb+Y8phBNH o2H4yLm3rrojxjo30byWZ1cgSLNunOeL9EpSA1Y218tJHlxSBkiQjGgYqCk7JGPQtLd73fZn DwANuW0gHJ82vUtG6pbgxR0OuxgxRMaPUt1Bcy+4Gt/wE8btFidJb/n3RnM+1fdVa0wspmTW qpDEJxR4X+B/cRTFRxPg420mHnHb5pMXftslp7fJ6YPJiGahMx54ywbXwXhv2MCjuSgWrxGT nOoBgYnEU7QZXd/xtanUN9kEXK/UNo0NuKBYf9S7fQmAWBZJKtcP7nG1tlBVcbE9scl7HJl5 9TUsDbhfuO1lYG/cTDVZp4yVR76RehyPUv2w4xSZKMmasNTLkqqLhtg3u/ENCXfej4lyInlG 44FAc2t39WvqIYEDxNDLT9qn5CzYXk1MBffL8SCqljjhHGBvirGOWJKSkdB71+csw0/Fyi8S F09NC/rRGPm+JauTJfkiGkZe6xooArzHMVJxShO1cydMxlN8HRwdDL+VYCZNXYW39uPRCQnU xNB84DZwDm217/OIC9cM/8kmpkfj8FNFXuwSoWwPqnvSg5H11y6im96YIaBzomRmKNME4qaF gdVM0b4Y9Px/AhYl6n0JFqXUALiTrKZqpqasThhGdfqoM9p7ctz1Vjye6/AcLZa3SqWJkZ8o mzn2yOqOl/laTidMR45Fdb422YUnoM7d4grM3A9H3evHJAD7mb6+4rwj2WdaHZu5WFwdJrHR c3EWXxfhXNGgE7jmifZIfBgJBo8TzTZ5j4lT1KRTxBCqmih6jEbBXZ6Tp2kuJPG7JO4ReXdI thp2w46Em/FiAFvJaOecB5izpEqiVRq+MUoJMgKnF5BkcnHKXsmzZnOpWRjIZYZjVH60+Xvz onEsQEC2ANzzdpq/n+z6LI00cxYVfvLVOElAKlFbHCzKOsJ6Sbgu+lGKbTyYKQbB1iEn0jH4 o/xpe8LVuHl4sPv+aA8b6qlE86tZ2V+dsFlN72NzI2DgNfnDl9awK7jxrEEQF0Daz1dXwZCT 1npfrl00ZFuHZof+DJkCV1ps2xMFgP/OuRVY1Fx1nrpwvzANY1X5yr+Iq/+00ga1zSRM7XSH gt+v03R6/gvSe/xGc/ILKhFj64qtC/lMgXXfHSKh1qqLUNrtAwRdwh2oP/EforqQGa0yinsp ydJ7OhZUVgfDvJVMYfuheZCHRpiufvPDu4uL37nBblZbZ8xKlmimhyhpWTQPMnz04s/z6Jxd /N60sTnw1WU78zotTrM2L8/OT3cbTZLTlIwAxThukvkpYQ5Ycgo3sTz5Iolmw3E/Z9IuphY0 Z42ABGD3bqQxY/eBOIm1MHf9Nq/XCD6UerAISvc9j/QPEbFhDJLSHUUmqYf6e4JPEdb8iUzS 05Igo5lSYrYkyK/NdnTTKDJvv4ccASCoup6orLD6TAL0lSkF+2E/hewfl5cj3SzSt1BkW9KP AG2Np18vb+Y3AGG9Xt7IbzpAxQw8s2bAEkCD7Ou0w1j9xZQ7imc0SxxkRZiyDRC8YpLmASXI EBNPtxxOAFOvJK0ZjgMlMtboZFLTdEdCluiEuGvBWcOTLAVOBmHd3u6upmVq9zeXmZWO0IuN k93TvYbPkN7LziPJ2Tr/O1mC4Ko9WMx2WJX8jYy8oPee2wupXaCE4qm9oNmQnsgJ/uxuWJ0r JbjugtWnqPNLV8zqHOtl1fOmLRPnGDC5kuS8b55cyBrCyL6Rr8bZxEWA7KhdbXWy1Gq6TOo8 sB9xMmIjtQQOz4fEkdLFYo7vywljD95VeXE1NntNvp1+mKqCdvYS55j9LGsLbN6VyQA4ma9S U4mZZWZHWMnAi6pJIGjjyJKm7SNCW4AIQqJ5PN+RTXg1Palm3KpFa0g0iIh083BPmvQRARQQ NYQNpUUc0VSbBKrmsNTMaJoQsSOJzQ2t5TPU5hq9bnV7nFv04FD42zH8/Wj7D7oDQ/aW9DO8 DNNzRgeiHdtpg27q4aVpznbihc2akWwhhSVnSS3c19WlxXu6ahLJ2u5mL7DZ+7waqxamd3x1 6U874xeHp7vNXeLTNBu9jIOkXdJgmjgzgJaBpKwp76iTo9v/1Y7Wxv32WtAZEwF61CzAHOCF cWkNHz3ODdYfP5iZ4UaG7REJYg+Gy7ZNUfK69FxrVpe+QVs41/3TLTGSRoETZa4ucToRAIwp kXN2jbuZiAeW5Xs4ogn8EtCnu3cQHWFqoAVi0mgPboYDT9Lr9jucXrd7p0PN2ibkWAPhYHTG +24U5HFqskoiHA+Ti4GI0f1tt30rryMvHR11vProlXAgiXyxpNbsTuPPJ9feQg2mgVy8ufTy c42NN4ttsXPY0GDL2CeOn4yZiQXmo73D5m4pNyOdkDWrOgredCEtrm29P2rfBCQnjIbOKno9 ytnHa22/pxKGfNY8YSjvdjTx8sVuc+fk9CPX4v1kmhHnNFebXSnvvTJqC6FCP8a1yZeYEAUS cVDZ1CZ9nZ1SYINMdht3p3aaH2Z0mffazB2W7f3i7sb7NTX/J7TB8QqrSexd3vuNi7351oVq IMCvwnLIJ3B3gJ8Jikf7qIdH0Ofp17efoobUDhoQfmWxiXuuXTwjma2aSheTbdLRTYZRO2fL yamcLZy0yquuVd419zhfu1R2dnB+RgfqDQkBkQRNXXcfwGALZbn3HsOxDFC7BV2Y8xYfzKPQ 5a6IaqXISxYnMDFzh0hR3wmGW3Qd9zqC96J9L+bjbuA08JA7i4nfz/FpeIjWIcc9UoR2EekD SeaQ2ou7LN9Qz9Mr4W9g0Hl1M61bfvVjJ/jyIzWaVu6pf7738VyOn5hQ/M1ZeYaTXtKG/i3V ULy3JNWr+vpvti5nGb1kXmiJvGRWMhZyYuEuOi3KFswzKWYbzDolhpD9zW43lU90eKfOyWqC iDsTIw++xuKZcA/xFEnUOI3sDRLjTpE1+pJFl47uCPmT4xVKUghPcDfFC0FTOh65swXxmg/Y osvtXYMBo5cxLJHAICX5zqUXtVOHZaFWWi7wuTamhZyzA5ZyLFMBFrwYT1P6np4hzgvgQvSh 1YilWMXJklZrYK4xAWVHOLNe1MMNJ1aswt8DYOd54/SscQK5UTVgG+VKfr1o/NcdDdhVOLpN 8EDYvZa59Vo0Xlq1jhDI9Antbk2FreLtcvda9DQdM7w5rmkY8C7pjtbYx9q7gA8wIhIi++pz YnE0vkpIxlMo9SStxvZLbCJ32xp9cd5bW1vLxfRSCQloxc8uMb62Z1yKwCa+oEUsFXWUDLEy IrsZCXKe8dWfJqj6BNuzi6aDcrmMcTye4HZKLtGPX42bYbBarT49+4VXzDxpbT7nu14uJQ6P wnReREl4mojPNV+6pdOzZahumtV5YqbwcMF5Wp343k9ZpH7RiZr2/tOzNfWrdspMCWfezNmy miY2EJFSJCUmO6y/bVx8OPObR6qnepKRSpXdfnaJLGW8k2pg6rlLxXcOL4WtPOUU7hAyf/jC DC7MfR0odd9/OPNaV/AoDnH0w3Y7arHlllWyOIZaLF5KD0D4ECSH9/kIUlMuyuYR40D37hEi 0ekGVkxlv8EuxOPpBMyYnKVJrG/29/aPEiL3t+gFjeg36cOUKZvejZQAMGGNg+rVefvw5MJ9 O/EMiWGTD6myg92wfy0Kt8gbs1um6oSo4NnhWUOyd3jsuSPMwzBgK4LqIt1hsErG+KNSxcS0 TG/yZIF0u1eduWWXIG1xFDf5SlkamcbolqkdbcmkbnB6K70JMzqf381ROBCTDGsx1cM7awQy TR205Y53mr84Bj8lh8Z6++Q7mhLdvuVgS2dsDMcy4kMXtGxIdfy99CJ86hUzHI5lY0kMFq4J JhZnzavOL5x4S+x2fu+3hjdfAP+UZRVzBmTOD6ziAzNUryrGTEOK6ej+nr97dNq4bOxSuxMn 4IT3RfFT3OQZSsYqz7mGTtySZx67uUZttppnsD99lR+xlSzpMVGwURQp/66CWvWZzR2O+3ZT yf6eNBR9FSoAy2cLDrnKDbTYGJMs/pQJcVpDHfvjFLcGXpr0323bkCeJg7RMWzRpwZ1z69vm ZbnErX7nWBd/8iYALRiIzOXyNMmMybZSs/4cLlRT7MUpFspo3G5zLKJjT392qLwMOmKd4DV/ l5BsND4fO9XYuEkSxxhIYjMV8Op06vvYjwbpUPWnZrFPbmWHvlk3E8dwmEUmieyxs5Txp8n0 XZniYhO7N4q4awnBDFWqL7ehjM+/kHD7sUeaI/DaKUgqaWPC50RWex9bXfbZStAV2C3CuwF8 8rHO2y0WbFsjXSJdTe28WRXPxtJmbV3XVuxfpgGcmT4+M++owrM7KHngJpxsVC6/CfoBO9ej ckmsRMMlPRG9t3Vkm9xcwwC2HB9Oo75JyrTHpk6u4JWdPw3G4uTfdN1UP1t37R00Lnb29s6B AWCxaYi3oWX9utV9iastMa+tTmfIoAOocnFv24SjYnW9spkv0/xW16t1nd8lA4wkYpTGipuZ 9oq8pMAiD1R50Y3YLzOfDq/DgyLOPzDYN0E66E45O8w8z5t4cKJ4U+OmY94vhhFPkCzrfAqV jdiRTaOw3rlGbgDUMpAQAv1MnPpKWWTaIVDMcWP64T03w1rqYjRzNMU6o9oX8K0WVQ4XfH5z p8/yx+1g/JBXBSsgF9kR9vo6Hri+uIOiEvhdJR14ueHxlzkfsf1ki6NbPNFAieo2wsB6d+P2 rbWUUkUR8NmRvX36hxJDKkuWNuPnq46ATiTmlPlTum2d0xAcIn5DO2ZIc6aQzrf01mff3WVW O33miHrqzIDt+8y97xydH6e3t87xLpYjj7L5rM5i7D0pK2HE1ldaOa3+Y94Yxbt3d0GnS9QB XsZLrIJFDE8X2PU3iGYYDLshLXVo5Vp9R/Um4bS8TTYkn1l1o7jpRODMMl7eDOMliUn7YZ9f Zl/xYNowHZ6y5kJ9t2WE7WL2XdHsNCFnOM39XhYDepnTJAMV6V4MMWlyPCZcPQdIr8nklNE0 llIZC+J/qhHmAlmdMG5lUiLTDz0uRR/6Ol2EXkpRAra8iBO50YmrjgmBKXndK4Cv6nYkwbeA P1c2K/lyzVutVTYME/Vv30mKcCFXjMIOLzy7PlSEV1f56DHy/3Y38K/G10QK+rE7Poe3bNty ri9i7CFDjPooZF5ai/knoXHqAPJgQQcJTjKurz5OVloqfyZcxZX4wxt8wgnWPpt0g7WP8kYY f8IRVo8dOp6d14pa6SOQOPo3f0Py7cmxUB3qV6e30sdO0EOq1yc7qeMQ9oml7vZ9aRp9pXuT 9ybHyHxHjTBuW/Ki52lpmC/WNZYKHDtaw27vUbAUniCboDNw/ZDU8CMGugwegvZ4xBkcBWRa agnWbtY8iSDPC5fVGuFTI9bZSANgizZrjE0A4A6NNCRrtLpZY8ftWrW+4eBesOB1Pe4zcB5v gACOQOCHsNgk6AInIB7dtIZXSC3cRqxdW2m/lwj4oFlxxgmxfBlutHiaT8DA2WKA6LJKcXt3 MBrSBr72EUtM+zCzUonbzH23mmzA099lRLBk7Vbbm1W5MGAvio3QxW2ZyswQHc4BkWDuNQME w3PSOf7FTQiRcL0GCphE8RdsAexUmeFQyCQvc7nlRGwOCm8ZVEZjiCygoML8WFKu/GytTida qQrCV9so0qKqO4KZCK4PPjLdRYVCEi2UBrBcLBYZT7+0pcJ+ubi2ThwP8fftQjTuFyIa3mE3 KpTX6nnvYHfXK69t1tbKeeU2dvePdg6ab14VbrzC6astWsmB+LBZ91CboPg/MYA/8J4zM6GV 8DYWWomJYldhQ306QTTA5lKI66BNzaEpNLNuOR8+FkG2iBJOoVq5nOoKEnxGD7ThUTauCje8 nYFPNiZKZ+yzZncrf65FkaYaXeXCSd8wVeR2Y7Unt1HS8NIkO1+Rlnnuh/0BwL9xYIca/8W7 hHde0ahhO6GG+XNu1+yqJ6HgspY1V3MeDFrdIVgvT0dRZ4qGPsFipk49KBjojiqSspi5uQc5 BrGae6AdNnjaYNva5xhw27dZB72wJAakmLC1x0Mfhi8JMGI9sUMF8ZQ+KQ9csocHJmmk2CeV V4o/iEFmFmFyNJZMqgG3qyTZo6ev46r1D+7za22oNTD/aQ+DuAv03+3EbbBNiG+6Tt7WSP43 nu3Ckmtq1bTEpt63sb04/qjycCJSXiF5dV5lxbAfeJwDYqgLShKbuA5J7gRo0gBFi1mK3eqJ H7hmPRnDTF934qcTtNvQ66Ql3T73EeZKrJj8BXCqCY7IMTjH1cZ2EPvq68ljwjVXZK8qo4DO Wlirk0equ7Zcy86sy8sxZiy4wozFNLWyzC1nVZlbEysKtlXb+KwF5fheLbKQVpemLiLjXzW5 gIxWCUAOB+c7x36TmO3GRTNedzRm9uHu+50TQN3zy7zvmHogCSJgZ3CYIaEPP857dhy1l9a6 g39ARCMSekNHng+NExHqP/i9T2tRK1FyWjFMzLZ8HY0sej+9oWbkjDwYDwAYIL5ps1KT5NwP ETHTOG4eNA//0rBv/WnNKNmrfnKxW2c/b6qWL3JEO/TklfSPXtHMUMJsmixQBSPxFiCRGi+I qZOQ9oiYbSpWZYCfmQYt9fQUrDpLxc4CvZmcAes68cQk0EuzjV/2wFlHC51rx8lLhyihQz35 cHHUTLSe9sVNfzzqRUBTS/RA6Kc+VL+PweS4Kvqnl4qP1Y2S8XW7fBOfnljCs3/eLnTHdJBZ mdYyZYGYmngxLZt3Bba7IE4tS3PXmFihWZVa55K9nbOLQxql88bOnv/uw/5+A1nkE6PFqgKT bYEDfd+yz6R+4/VrULlWpzWAlotFazTnmtlErLpS1p7PrFfP4aUkV+kWkdRlkFym1RR97g4S FX1NL7zs/rDqapa+rC7x6bH0VB/k8ZPtz6ohbvuqoyIT6lRYhFhaZ9vEKUOrQv3wzKHCBMUS QPN8wtmXS5ml0/h4+uFoj3VG8WT84x9eTG2cAtzbaQ/T7vSNnYOdw5Mplcqzyfrkvpfcip5n 1x6M0zyTHutWevCVhR0tTxxcOxiMRH0/GI+cpSWanTtGZu+F98YvF5TRLRR618TlkbQg8XSq TBLH0VaHmQjDgdoRXULT6DJHs0S5+kSTtMDMzeGVbAb93fnpL+IZJ7RgZ/+ice6np4Kau+Pd DMMo8m4hgUHZBZtca8g44y12pScRbX8YBO+ae2vCXhyKzHYdoskSckhsYb8d5LlJy+WcivuR lL8Kb8YRH0JbLBbQLSZ5VHDJKxXLZY8VGMkn1LrNWlWe5NmuEjd+yX7Hw/tain2rdZM62zD9 Ar1SeuYFeeVCIvAmOiVspNTAFgn45MsrbAPisANDpNmUH0VYCggfgAKlVKxU3B6LvUgDBePh yKxC3hAwJ206m8FhewkeWrAXi4Jl9zwCHmvQ8WT7LCUcy03QGuzM6OV9SwPaxAtNXoB4n9M2 s7JTmwV7wRXb6vqSM5jz38k7vRZapgOW56aEKvxTi3TbxOsvyc7w/PIOF0KmzLfkyHnj7X88 P7xobJsnEqpgOHKJWNg/+tB8TwSUX5GjmDnBpQWWuho/5lnt5hV3wa/au5lrPv1w6rI3BedZ +ZPvPL/44/bOt/7NW/NuAbeNM+8C89K8G8G8N89eMO/MuR3Ma7PsCB3zzN2wmjhkjEYjvSfi h7Nsi1VrGoytdk8dGMYXNj41zsaIeMVoBcYLgCOTzGwZy7nR58Wn5RStnKtImBC6jE+/vv+E yQfRKuWit0IrqGguRmhUsa0ock+ekclSQihrSXklquaSoasD6SqtE8CTpnpzRcU/J2XPpH3V eN5BUYp10DMAL041WcIbholDT0KzwKeJbwmG0mhVVt+YydieUO8VnGeGOC4wo/zqgrMp7849 k6tmIr2pk2k6NONEcnGdxFWjN5gib7PJNSUxJGw5rriQMswj+3rZW/4V4Q3i0+L3x3eAU1ku 1+q5XC6WIUaAQX3jra6aIcENfZwFVaemK35uVo95+B9IbcDmFjZ4MrgG0UIsKpIutiViCvFR r1RpodCkAwWdzWWMijK601f1FHXE7Cvac0S9rAXtahTdxQw3qEJCUTjFRhDDjpvNmrChzKfC iuVbNZUkXQamm2Xss+x1VMh28dAR05Wkf00sKDOYia9MWVnG9DF9bRUcaCqaSR0Ub9jqYvWE lpWg9ZZYUxnLqeDE8fLluZkSeNW9xv6Hk3hhswm8AMfWEBFE+86wd3y5TR/PuqvJuNc38pVN pOOuFPPldddRkDr3oXletkbW1jCKvR1ejaNh+VXeFHJdzuPX6eQ8nvI6uA55HYUcfyrn6+8/ nE15+3Y8kJepSPanD2Ov39S7xDbIu1Qk+7uIBZny8n+Nu/o2Ck359NHRtE/3evrpo6NE0Kl9 d+fd+bRPt66G+mkUym5543ja28GdvkxFcplAjr9Mb/dn2/BfpOUZvd4/a0x5+3oQyMv74qgz +el3H5pT3r0aR/IuFcn+brNx8NuUl6Pg5ou8jULZn27+Pu3T0aN+moo4nxYw6fUaNstqvVKq 5Us144qwAtgfRuf+uHN+cnhysCWHg/EPZZmAUVjupFjQZZjiThcpr3uPXjj8Tjhbc2cbJy/x 350wMB45fNJASBNudJWP+HY47GiAEPDEDDarcU8Qf3dDm84O90QmAN9hSn7UI4sda1aHXKNx dRN6LFWzV7I/8tR3nvgk4gT+nEQEZfhobRjMTlwVoAQSDaSPnov3GIOmda9tWBwyoHOWN2UQ 1e/nKgx73xWeah4jesMJK2UDFNv9VCcY8SAzXdvWLByaQcitZ9QC+ie7lnRCF3sNo8m+g4US nZL3ee/jyen7nZMD7x/exw8njCCuiI1K6dW9G+rZmLciqnSei4NVMFdAZvPuglafeZjY6ZOH J2+KFEpaRvkQOIoBVU/PrIYsNZLq8ha0r4OJwXIEsM/fwquEmwm3TqKpnUwl1y3iEratU/t+ t99JxPXzEpU9RJM8jvKqoeN1ADAzO+8mAwxzUHEFbRWkRXYWMH72ZdpXYP5E4I1gjUvekXql YtIziBZ1ef/odOeCztIH6gs7ryrO3SU/8OVI5ofIqwmt4ZJkpNjdOfeWMdHWpx6iwzBeqcJ6 2RwES1+TiRXqSCJSKjL8eTXOZuBZVMykN6xkgYDfHZqxMv0xrTJmcMRewncsvIGTPibZUEP0 0LiJsKDvNHiV8RwUxVBwRAzOozgrDgX6UGsesqt3ixYTXAolxgL+NKwRiRfovQJPKU3FakC4 KjQFjC7RV5R2frzGtTgOL8iLYtRSVAkgwsYDXq7Oggt0ybHuRYZenQ/r1XI1X95Mg1x/NxVO Wrw3hfnVHfoUneEFtbtz4tMe3ztq+Mcfji4Oke999/3h0d5540Q3DuATun2eCaYYSShEh+I4 +IfyKcdXAe8tZZEZKTmN1iSdBZ6iN65XxDegObQ7Zic4bqioJTqrS0YYNc+fOZPyOmqm2y5P /eQ0Gc46sUiMQ8uTq2QGH1/3fWmZdZUxPLnW/cRb0j4nrF63Jo3dNED5ITMYLp68uZOAk9/Y Kpe3KuUUnPxk0Uw0+VJpE7FFq3p1Y65iv5DTDwf+UWPHP945OjrdnTFpErNHA/rz2L84PfPP dvbyXr3qrXjV4mZ9jkwsMWwYY/IINrppiiz2A8RYHJx8UJbsB1HrtkHImCbegiYOgwhsXKia 0cDjPGf0wtTxj4hkt2/d8Td37KCWy16JRrS6VU4nUsgqWi5tlSox8r9k6OVzTy5ywgwDRrG8 R/rlCLmmIe0FDwNvmXMo2BRYgnX52B8huSAJ9DKm8DVO5vvQ7UkPJjN+OIFqX1om/cWDLNoS yeXdPt3udrQF6YBFvMLtmTqCj1EnGCRGUO/Ey7KOYalWtmq19Aimi5ZLyFpBpYt1Nx/C+iYf 07jWNVzm38DbsQsVwqj6fw+GIY4fjr6KjR/WjZ2NJ2OGSOlcPTDJX7Z5qKCFv4o6OWWsLK5+ B9l6blBP45Lk3xNakL/7vx02D98dNZi5Miv2uLl32kwTJ275ZjFf3aCWb9Tz5WqcR0MJXpxJ jGPhlm3k5bvmns0uQCxSnH3g7MNlLpVwwIeTie/nHHfXk3Ck4ZccLmMsIXQOIEUY1kIC5CkS 0K+W9/fw7qob2Ii1d4hKIHGoOyIGB7m5DEWL8ySozHQV2KDJjgmQs9RRoTBCeybi6Z0FXtVW 3ISGU0kE5F0Yt13e5l3JVNjl/A+tkePUqwaxL2HvC3I60KmGdjixOhCy3GCsPOCdb5FbSt4S 1NjPwRAw6KhsFIYcdwAACTpcu52gpQpZSHfUzv/Ng4Zv39Iyu2VVtJwSZpxEjcuBd9fSYEXX 0I4T23jHEWTSdzj9geOixRoFiYGwsTj0Q8ZVUjbEj52YnESZnFvIxuYkiqSA6mfAn0i9nvBI FvewtxqoxSd+kX0IjQPyXOHteOWJkK/CkmPS+Oo2IbmB8f2oFwQDhVhKxJVhcMcS7rjsNEA0 EQ4AbbwpDUDfyMOGNABrCCyvu8ARE5HtLMkvF+NAXG17Eug2C01hMjFH5tQngrHSk56dl2Dq dGeisceaVTCmjtoXY56YcmU8E1xs83z3/TNLIQ4ES6LAZ3Dd8S21zETj3shlvbkllvcuJuFO 3Hd+cv1yYyPK94bxVnuCtbtYvCW1L/ypcuZ0ztf5msMBe/Hy1ZDoeLazV+STwBvJZ7MvV1fk VcLe5cBbbwn6Uyu1MjdTrWzkq4DBQ+6w9XUT2mgXaNxcsA0mQ9CE57oNhmmNWj0bd7RqX6CW fLeadmcXO7LqjlZjR8/mjn/eaF7snF8YAA57w1DcRM8sX2BSAZCIjuBmmvi1m7W8zu4Pkgb4 hxxINM1dwOdNd2iKW4DFQa81Ih7iLvX++7MCjXapBDu6WOgjngRjt4TcTVR+pxeFGj2oEEaR Deux8bv5ODCbxXWngwaY+15i2k0+JK0DvI0JkRemkPhjUxSGtsJw3OdIJ2LG2M0cFVwF8YAB fd1xX2iZQ050SAFyRCTz3K5ZYfAk7BecTqTjrW9CPgqH4fjmFkm7ujIO8HoPzDd794AX5z4D bKo1HDHolga2uX7xsoLTYc+rjlYsHrQEboo+hSn0q6pampwbgyoKvZWd3YvD05O437qAo3FX moIR5okTdwmjieFNI9LsuerRRGbNjtGY2CArxmgnn/W1Wn9kPpBTXjJ5AshbhbdRy5AMA0rD IAv8rrA6Um9eThTw0LwVzcgaiA0JLx0iBIFmaaTTcvUoXV5LwFHSoDMOZacre6sHvq7X/Rz0 Ht2sIfZASrXVjdvPAMZ57k0TBW6RP20NezsnB43zWeqQktm1EK3dfT9LJVwwCc0jcfKZa/NP B4PsyWrFEDZjYbV7rVqQ/B2SWXyO45/5e6fJPlikJenMYaPR8FlDCxils1M0T4o9V7EYmBib yHlsFJhvzPpm1sIpYJyIwHMkEMbjbZ0zaDEvI/+FF5L/wkvJf+EbkP/CtyP/hafJv6CtZKdC x6RZSYYl04VPBD0LTJju8ydCIftE4Pcz1pV7OhTiZZ9RcgpbEqsAFTfu9Pzjzvkedt3JzpF/ ceof7xye+Bfv4bFmdQWGC4ZftdVOJiD9ErA0mvkQZT0pa9SREuZvBVBZ2uYAYgMk7gJpvDUc diEltxQZURPXxCabPVF+Clql/R7vbvNNWdLW9YobwKiXiY/yKy9vfMrkMAzE8Oq+5LTTVm3x ojShk2SFxHklJainZ6fNw0tJYQLLiOqGYd2iDwRdTpnlLnjanLx8oihsAwRGVA2ABjUwEFaf QYt4wFn6WtFjv01ruh+OI1bAjLRHfWg0f+QsKXECFaIQsAgJcCW2r1pfTBI19filyeNKWIOV szoJy2YUpmi9VTf+FFuxOk33PcO7wpLAOgGKOfwSiPTHHm0tTv+ZZhJ4/PQLWo1wHSqXCF6R ylFcGazRVIkYIcM2LV9Va/UBjnTTCwrSWZqc2zAaOTbIUnWzymkXa8UK/GkM8o4RZ+Ezxb95 J6/KppFtalJ2s05HUqkJv4RY8BF3Co60ZmXxwt8/vDxubHHw+T0jvUTdTpeR1rlQJMmLou4d SYWtPp0pUe8xrwl4IClSZ7ie+BMIvYCuTVA3lKkK+uM770/v3c7uL2xS8o8Ojw8viNhcUpdq xaL3NZWpdUVJjq1Xw4z+yKpi1St92nbFMm/i7f4gZAorprDnCY07Rt+AsiWJw8j6+cn8KH6b VG7ZX0sAMICu1tYu/lg5MevaX2VWjgNwzTrCYSHrKc7W9/SxYPkrcy4E/zXG962yBImmoQRz dnUuzUpOn6HvVpfeOOtpecpKyGetpiT3qQ6HPCavs6T5TEBbURE5becBTVk2d3iVXo+H4nbT ugPCjKjMUyuEY8Ef2E8zYaSM9eurT6j3DFPrInwaNnRZm5VJHEhOhM4jAaIoCQAuzmVaWUXP t/Yau0fQw2C+jw6bF/bgl3j4u0efgUK6N3C5/eOESn1ShEsQKdjtatVavl4Uw51yvZ7zjpes wuEcsBXfyw66wtGDnRDBHYgtPnQVoZPnKhi1s3aDniIyrxP2VVnxRske+J1x4I/CpK20xKvg q6PaSe6zJ6uexQrrVjDLp7I3dvqLqVKzfjCFs2XGrzUkkjXtk/MivlrzXdFb/lVq5ql9uvNP NmGGXrvv2y/BQINEUUyW2RRiLS4WpjPvjfusCRDIcAO/ItgNbAzijainAG3tQoHREGBtxBG3 cxcikJBpARH3/k2kRF6UDv3wdjxg+17W+qUD88qZsYmOw1GN+Aj6HD9+432fFBds7s3vbaEJ uT0LUMkqNLMJZlEdtNNAGm5L4udrjnj8/RvGJici4zpQoIXpBs5DpFnvJXwj1FFGk2dVrcmb PGid8d2ALSsyEhOjoEsppd99AsNkdVKZlVR9zyhYCe0s1Zh21osbeesuvQixNscxRqBLZPPv Qccx2nqZLsEuQddHn2hCX+1chUMSGV5BvvSMj6tTxeHptBoOT7mCo50T7/DH01jafgVB0Ytd Xvms4H5XjLeB8wHH7zj1AXrCH2gQK6ps7rA1cGt3++o4EafqoSfSUxCLuwD7MHjgSOKwP63b ++eNxl+mVsgPuU7712Sna+sCBY1s6hvpXjv+6anK6QnXTGfkzXhqbx2H69T79ITfP+z1ghuE 5sUHqtvZRGUn06aAnkhlztxmjtfUVaKLBAtkEEYRNF0TQ1UvlWR9bGasj+bOL1OqpicyB0Eb yR8AN9jXbmaOmevuna6KHmldN3dUiyy3L91QFt60XjdPP5zsTasSz6ROdkM0SNSdye6X69z9 dQu86n4idjJPf+D3Jlf/joM+b8Z3gXpMxjqnaSPhBlekasUjrvbCMFBTScPF+52P02qhR2Z/ 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 --------------000808040109060706010300-- From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 22 23:54:16 2012 Received: (at 12471) by debbugs.gnu.org; 23 Sep 2012 03:54:16 +0000 Received: from localhost ([127.0.0.1]:50004 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFdGp-0008OY-Lx for submit@debbugs.gnu.org; Sat, 22 Sep 2012 23:54:15 -0400 Received: from mtaout20.012.net.il ([80.179.55.166]:38173) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFdGo-0008OR-5V for 12471@debbugs.gnu.org; Sat, 22 Sep 2012 23:54:14 -0400 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0MAS00400AFPYU00@a-mtaout20.012.net.il> for 12471@debbugs.gnu.org; Sun, 23 Sep 2012 05:52:26 +0200 (IST) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MAS004XRAREY010@a-mtaout20.012.net.il>; Sun, 23 Sep 2012 05:52:26 +0200 (IST) Date: Sun, 23 Sep 2012 05:52:16 +0200 From: Eli Zaretskii Subject: Re: bug#12471: Avoid some signal-handling races, and simplify. In-reply-to: X-012-Sender: halo1@inter.net.il To: Stefan Monnier Message-id: <83sja9jszz.fsf@gnu.org> References: <50590626.2070407@cs.ucla.edu> <83lig6yoim.fsf@gnu.org> <505AB299.9090605@cs.ucla.edu> <837grozizw.fsf@gnu.org> <505C1A75.9030509@cs.ucla.edu> <83mx0jydya.fsf@gnu.org> <505CA363.1000603@cs.ucla.edu> <836277xolr.fsf@gnu.org> <505CAE5B.8060802@cs.ucla.edu> <83zk4jw7sf.fsf@gnu.org> <505CC70B.6050308@cs.ucla.edu> <83obkywkmt.fsf@gnu.org> <505D7B33.4000504@cs.ucla.edu> <83haqqwhhv.fsf@gnu.org> <505D8799.8030905@cs.ucla.edu> <83mx0il69z.fsf@gnu.org> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, lekktu@gmail.com, eggert@cs.ucla.edu X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > From: Stefan Monnier > Cc: Paul Eggert , 12471@debbugs.gnu.org, lekktu@gmail.com > Date: Sat, 22 Sep 2012 16:28:26 -0400 > > > But for existing library functions, the only sane way to replace them > > is to have the replacement support all the features supported by the > > function being replaced. > > Agreed. Maybe a better solution is to use `emacs_raise' which can then > either use `raise' (on POSIX hosts) or something else (on Windows > hosts). Yes, that'd be good, I think. From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 22 23:57:43 2012 Received: (at 12471) by debbugs.gnu.org; 23 Sep 2012 03:57:43 +0000 Received: from localhost ([127.0.0.1]:50008 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFdKB-0008Tb-7d for submit@debbugs.gnu.org; Sat, 22 Sep 2012 23:57:43 -0400 Received: from mtaout23.012.net.il ([80.179.55.175]:38748) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFdK9-0008TS-0t for 12471@debbugs.gnu.org; Sat, 22 Sep 2012 23:57:41 -0400 Received: from conversion-daemon.a-mtaout23.012.net.il by a-mtaout23.012.net.il (HyperSendmail v2007.08) id <0MAS00L00ASTB200@a-mtaout23.012.net.il> for 12471@debbugs.gnu.org; Sun, 23 Sep 2012 05:55:54 +0200 (IST) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout23.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MAS00LDAAX56A70@a-mtaout23.012.net.il>; Sun, 23 Sep 2012 05:55:54 +0200 (IST) Date: Sun, 23 Sep 2012 05:55:44 +0200 From: Eli Zaretskii Subject: Re: bug#12471: Avoid some signal-handling races, and simplify. In-reply-to: <505E33CB.7090709@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <83r4ptjsu7.fsf@gnu.org> References: <50590626.2070407@cs.ucla.edu> <83lig6yoim.fsf@gnu.org> <505AB299.9090605@cs.ucla.edu> <837grozizw.fsf@gnu.org> <505C1A75.9030509@cs.ucla.edu> <83mx0jydya.fsf@gnu.org> <505CA363.1000603@cs.ucla.edu> <836277xolr.fsf@gnu.org> <505CAE5B.8060802@cs.ucla.edu> <83zk4jw7sf.fsf@gnu.org> <505CC70B.6050308@cs.ucla.edu> <83obkywkmt.fsf@gnu.org> <505D7B33.4000504@cs.ucla.edu> <83haqqwhhv.fsf@gnu.org> <505D8799.8030905@cs.ucla.edu> <83mx0il69z.fsf@gnu.org> <505E33CB.7090709@cs.ucla.edu> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org, lekktu@gmail.com, monnier@iro.umontreal.ca X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Sat, 22 Sep 2012 14:55:23 -0700 > From: Paul Eggert > CC: Eli Zaretskii , 12471@debbugs.gnu.org, > lekktu@gmail.com > > +/* Internal signals. */ > +#define emacs_raise(sig) kill (getpid (), sig) Windows will use a different definition. I'll probably just implement 'emacs_raise' as a function. I want to keep 'sys_kill' only for sending "signals" to subprocesses. From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 23 05:38:12 2012 Received: (at 12471-done) by debbugs.gnu.org; 23 Sep 2012 09:38:12 +0000 Received: from localhost ([127.0.0.1]:50259 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFidg-0007jO-3T for submit@debbugs.gnu.org; Sun, 23 Sep 2012 05:38:12 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:52871) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFidd-0007jH-SP for 12471-done@debbugs.gnu.org; Sun, 23 Sep 2012 05:38:10 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 9097A39E8008 for <12471-done@debbugs.gnu.org>; Sun, 23 Sep 2012 02:36:21 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id rAvFQnwfOej1 for <12471-done@debbugs.gnu.org>; Sun, 23 Sep 2012 02:36:21 -0700 (PDT) Received: from [192.168.1.3] (pool-108-23-119-2.lsanca.fios.verizon.net [108.23.119.2]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 4B2B139E8007 for <12471-done@debbugs.gnu.org>; Sun, 23 Sep 2012 02:36:21 -0700 (PDT) Message-ID: <505ED812.3010901@cs.ucla.edu> Date: Sun, 23 Sep 2012 02:36:18 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120827 Thunderbird/15.0 MIME-Version: 1.0 To: 12471-done@debbugs.gnu.org Subject: installed into trunk Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -2.4 (--) X-Debbugs-Envelope-To: 12471-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.4 (--) As all the issues seem to be resolved I installed this into the trunk as bzr 110152 and am marking this as done. From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 23 11:24:35 2012 Received: (at submit) by debbugs.gnu.org; 23 Sep 2012 15:24:36 +0000 Received: from localhost ([127.0.0.1]:51382 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFo2t-0008G9-EL for submit@debbugs.gnu.org; Sun, 23 Sep 2012 11:24:35 -0400 Received: from eggs.gnu.org ([208.118.235.92]:60591) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFo2p-0008G0-9d for submit@debbugs.gnu.org; Sun, 23 Sep 2012 11:24:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TFo13-00065y-Kf for submit@debbugs.gnu.org; Sun, 23 Sep 2012 11:22:42 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:55802) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TFo13-00065u-HA for submit@debbugs.gnu.org; Sun, 23 Sep 2012 11:22:41 -0400 Received: from eggs.gnu.org ([208.118.235.92]:59039) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TFo12-0007YL-Ny for bug-gnu-emacs@gnu.org; Sun, 23 Sep 2012 11:22:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TFo11-00065f-PG for bug-gnu-emacs@gnu.org; Sun, 23 Sep 2012 11:22:40 -0400 Received: from plane.gmane.org ([80.91.229.3]:52828) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TFo11-00065Q-Ia for bug-gnu-emacs@gnu.org; Sun, 23 Sep 2012 11:22:39 -0400 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1TFo14-0001LE-DQ for bug-gnu-emacs@gnu.org; Sun, 23 Sep 2012 17:22:42 +0200 Received: from 82-69-64-228.dsl.in-addr.zen.co.uk ([82.69.64.228]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 23 Sep 2012 17:22:42 +0200 Received: from andrewjmoreton by 82-69-64-228.dsl.in-addr.zen.co.uk with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 23 Sep 2012 17:22:42 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#12471: installed into trunk Date: Sun, 23 Sep 2012 16:22:23 +0100 Lines: 19 Message-ID: <82d31cix1s.fsf@gmail.com> References: <50590626.2070407@cs.ucla.edu> <505ED812.3010901@cs.ucla.edu> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: 82-69-64-228.dsl.in-addr.zen.co.uk User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2 (windows-nt) Cancel-Lock: sha1:Nma7vElmGE9wfV2NCoWIb71c3ro= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Spam-Score: -6.9 (------) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.9 (------) On Sun 23 Sep 2012, Paul Eggert wrote: > As all the issues seem to be resolved > I installed this into the trunk as bzr 110152 > and am marking this as done. ...and again breaks the Windows build. This is with MinGW GCC 4.6.2. gcc -I. -c -gdwarf-2 -g3 -DEMACSDEBUG -fno-crossjumping -IC:/emacs/devel/libxml2-2.7.8/include/libxml2 -IC:/emacs/devel/giflib-4.1.4-1/include -IC:/emacs/devel/jpeg-6b-4/include -IC:/emacs/devel/tiff-3.8.2-1/include -IC:/emacs/devel/libpng-1.4.3-1/include -IC:/emacs/devel/xpm-3.5.1-1/include -IC:/emacs/devel/xpm-3.5.1-1/src/xpm/3.5.1/libXpm-3.5.1-src/lib -IC:/emacs/devel/zlib-1.2.5-2/include -Demacs=1 -I../lib -I../nt/inc -DHAVE_NTGUI=1 -DUSE_CRT_DLL=1 -o oo/i386/sysdep.o sysdep.c sysdep.c: In function 'init_signals': sysdep.c:1766:62: error: 'SA_NODEFER' undeclared (first use in this function) sysdep.c:1766:62: note: each undeclared identifier is reported only once for each function it appears in makefile:323: recipe for target 'oo/i386/sysdep.o' failed It seems MinGW does not define SA_NODEFER at all. AndyM From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 23 12:25:27 2012 Received: (at submit) by debbugs.gnu.org; 23 Sep 2012 16:25:27 +0000 Received: from localhost ([127.0.0.1]:51421 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFozn-0001Bf-92 for submit@debbugs.gnu.org; Sun, 23 Sep 2012 12:25:27 -0400 Received: from eggs.gnu.org ([208.118.235.92]:33446) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFozj-0001BW-NU for submit@debbugs.gnu.org; Sun, 23 Sep 2012 12:25:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TFoxy-00075A-1h for submit@debbugs.gnu.org; Sun, 23 Sep 2012 12:23:34 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:41735) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TFoxx-000756-Ur for submit@debbugs.gnu.org; Sun, 23 Sep 2012 12:23:33 -0400 Received: from eggs.gnu.org ([208.118.235.92]:35701) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TFoxx-0004Fq-7Y for bug-gnu-emacs@gnu.org; Sun, 23 Sep 2012 12:23:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TFoxw-00074D-Cd for bug-gnu-emacs@gnu.org; Sun, 23 Sep 2012 12:23:33 -0400 Received: from plane.gmane.org ([80.91.229.3]:51009) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TFoxw-000741-5Z for bug-gnu-emacs@gnu.org; Sun, 23 Sep 2012 12:23:32 -0400 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1TFoxx-0006Uv-Bl for bug-gnu-emacs@gnu.org; Sun, 23 Sep 2012 18:23:33 +0200 Received: from 82-69-64-228.dsl.in-addr.zen.co.uk ([82.69.64.228]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 23 Sep 2012 18:23:33 +0200 Received: from andrewjmoreton by 82-69-64-228.dsl.in-addr.zen.co.uk with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 23 Sep 2012 18:23:33 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#12471: installed into trunk Date: Sun, 23 Sep 2012 17:23:15 +0100 Lines: 22 Message-ID: <82d31cso7g.fsf@gmail.com> References: <50590626.2070407@cs.ucla.edu> <505ED812.3010901@cs.ucla.edu> <82d31cix1s.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: 82-69-64-228.dsl.in-addr.zen.co.uk User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2.50 (windows-nt) Cancel-Lock: sha1:Y0k95LmgvtKqZxECu69qO654xAs= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Spam-Score: -6.9 (------) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.9 (------) On Sun 23 Sep 2012, Andy Moreton wrote: > On Sun 23 Sep 2012, Paul Eggert wrote: > >> As all the issues seem to be resolved >> I installed this into the trunk as bzr 110152 >> and am marking this as done. > > ...and again breaks the Windows build. > > sysdep.c: In function 'init_signals': > sysdep.c:1766:62: error: 'SA_NODEFER' undeclared (first use in this function) > sysdep.c:1766:62: note: each undeclared identifier is reported only once for > each function it appears in > makefile:323: recipe for target 'oo/i386/sysdep.o' failed > > It seems MinGW does not define SA_NODEFER at all. There's also a stray use of interrupt_input_pending in w32term.c which should be removed. AndyM From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 23 13:39:04 2012 Received: (at 12471) by debbugs.gnu.org; 23 Sep 2012 17:39:04 +0000 Received: from localhost ([127.0.0.1]:51461 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFq92-0002o0-8w for submit@debbugs.gnu.org; Sun, 23 Sep 2012 13:39:04 -0400 Received: from mtaout20.012.net.il ([80.179.55.166]:50808) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFq90-0002nf-Ln for 12471@debbugs.gnu.org; Sun, 23 Sep 2012 13:39:03 -0400 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0MAT00F00CSGBS00@a-mtaout20.012.net.il> for 12471@debbugs.gnu.org; Sun, 23 Sep 2012 19:37:12 +0200 (IST) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MAT00FSBCXZBG10@a-mtaout20.012.net.il>; Sun, 23 Sep 2012 19:37:12 +0200 (IST) Date: Sun, 23 Sep 2012 19:37:03 +0200 From: Eli Zaretskii Subject: Re: bug#12471: installed into trunk In-reply-to: <82d31cix1s.fsf@gmail.com> X-012-Sender: halo1@inter.net.il To: Andy Moreton Message-id: <83k3vkk5ds.fsf@gnu.org> References: <50590626.2070407@cs.ucla.edu> <505ED812.3010901@cs.ucla.edu> <82d31cix1s.fsf@gmail.com> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > From: Andy Moreton > Date: Sun, 23 Sep 2012 16:22:23 +0100 > > It seems MinGW does not define SA_NODEFER at all. MinGW doesn't have 'sigaction', it's all being faked. From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 23 13:39:53 2012 Received: (at 12471) by debbugs.gnu.org; 23 Sep 2012 17:39:53 +0000 Received: from localhost ([127.0.0.1]:51464 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFq9o-0002oz-Qb for submit@debbugs.gnu.org; Sun, 23 Sep 2012 13:39:52 -0400 Received: from mail-wi0-f174.google.com ([209.85.212.174]:53207) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFq9n-0002or-4z for 12471@debbugs.gnu.org; Sun, 23 Sep 2012 13:39:51 -0400 Received: by wibhr14 with SMTP id hr14so3500879wib.15 for <12471@debbugs.gnu.org>; Sun, 23 Sep 2012 10:38:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=EcRHxupNuEf1DnhUX0e6z2oJav0Qykj50nT+W7cmtus=; b=DP3CXEVflrkpptuEsGSrMQIw5DyJ4sOUJ6SPVVwoyygwiKwceUFaWC//QYo3JSDQQz Bw3Id60hT7ndbZAt32qwGkZbqJmhRC0aJ+V6nNbcGbBH6qOHnwjpnkUKeXopkJvLColV qnO0JXnDE/y9QyzMTVXuAvV0bpwXmVS5x11OffsKWUQdygPzh9f/E7r2C4gc9eK+d/1P AjnALW7hj0tHkRkJYG0UmbWo4ToB0y1ifkiKPu/reu2g3/j6HW6N5VwGRN/XqFxQuUDe JQivQjQwG7xYumpQ32py93i4B9FFO8jYCykk7m05n5R4CJd0BJl5FWevu8gsLtPbPEtU MBNg== Received: by 10.180.75.67 with SMTP id a3mr1776634wiw.1.1348421881326; Sun, 23 Sep 2012 10:38:01 -0700 (PDT) MIME-Version: 1.0 Received: by 10.223.155.132 with HTTP; Sun, 23 Sep 2012 10:37:21 -0700 (PDT) In-Reply-To: <82d31cso7g.fsf@gmail.com> References: <505ED812.3010901@cs.ucla.edu> <82d31cix1s.fsf@gmail.com> <50590626.2070407@cs.ucla.edu> <82d31cso7g.fsf@gmail.com> From: Juanma Barranquero Date: Sun, 23 Sep 2012 19:37:21 +0200 Message-ID: Subject: Re: bug#12471: installed into trunk To: Andy Moreton Content-Type: text/plain; charset=UTF-8 X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: 12471 Cc: 12471@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) On Sun, Sep 23, 2012 at 6:23 PM, Andy Moreton wrote: > There's also a stray use of interrupt_input_pending in w32term.c which > should be removed. Done. Juanma From unknown Sat Jun 21 10:45:35 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Mon, 22 Oct 2012 11:24:03 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator