From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29301 invoked by alias); 30 Sep 2014 23:42:02 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 33297 Received: (qmail 5065 invoked from network); 30 Sep 2014 23:42:00 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,HTML_MESSAGE, RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.2 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:content-type; bh=n6qTQFbuUugAfG7UN492nCTpFisMpK6BSJH3sjXZTaw=; b=EZVq3mU/74LwTc1CsOeqSJsaMe4mvjlNTVI4JU/XNquyUGuuzqXp1++YxEcQOryHs5 1DsbjyNmmfq5rS3E753fUcWxO3n4EUrZqgQr0RiIsbFxbV/08n0pAkOqQoUfepl+BUkS xn0F+L7btd02YuK5Mh3hV9dWoe0cQTdNfP44lpcxqcZLjRBo5Es3j9cDQfwxDyZDruzZ 3lONMsodH1OWNtOpok3Gxu2uiXuhARu5TSuffK4uUJXz3jViraYgOA4tmSGI0Uiunt6j J7fDpKtSlcSaZDHggz7jtAUwln7ktEcDxIKt8CqYw0madoTA4WVw6fyqeyaRtckSEmAM 97ZA== X-Gm-Message-State: ALoCoQklUvBuD1bym6YexvOaatpiaKnCe4oAsoV1XSFrzQ3xI7+QmfpV5QrRHD59Hpi9U1+KsU2a MIME-Version: 1.0 X-Received: by 10.180.86.73 with SMTP id n9mr9316746wiz.30.1412119124028; Tue, 30 Sep 2014 16:18:44 -0700 (PDT) In-Reply-To: <20140930172125.GA2703@xvii.vinc17.org> References: <20140930172125.GA2703@xvii.vinc17.org> Date: Tue, 30 Sep 2014 16:18:43 -0700 Message-ID: Subject: Re: zsh 5.0.6 hanged in freejob from TRAPCHLD From: Bart Schaefer To: Zsh hackers list Content-Type: multipart/alternative; boundary=f46d0442806ec4c60f0504509a31 --f46d0442806ec4c60f0504509a31 Content-Type: text/plain; charset=UTF-8 On Sep 30, 2014 10:30 AM, "Vincent Lefevre" wrote: > > I typed: > > ps -aef|gr pulseaudio > > and zsh hanged. The stack trace seems to indicate that the problem likely originates in lexrestore() which calls free() directly (without the signal-safe zfree() wrapper). There's a corresponding problem in lexsave() with a direct call to malloc(). The CHLD signal interrupts the free, leading to internal deadlock when another free is called (correctly via zfree this time, though it is optimized out of the backtrace). This resembles the problems in execsave()/execrestore() that I fixed last October. I'll send a patch later if no one else gets there first. --f46d0442806ec4c60f0504509a31--