From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4870 invoked from network); 14 Jun 2000 09:43:54 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 14 Jun 2000 09:43:54 -0000 Received: (qmail 17531 invoked by alias); 14 Jun 2000 09:43:06 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 11889 Received: (qmail 17520 invoked from network); 14 Jun 2000 09:43:05 -0000 Date: Wed, 14 Jun 2000 08:14:51 +0200 (MET DST) Message-Id: <200006140614.IAA01313@beta.informatik.hu-berlin.de> From: Sven Wischnowsky To: zsh-workers@sunsite.auc.dk In-reply-to: "Bart Schaefer"'s message of Tue, 13 Jun 2000 16:31:40 +0000 Subject: Re: Wordcode functions with empty bodies Bart Schaefer wrote: > This is mostly aimed at Sven ... just a reminder that the bug discussed in > 11837-11841 and 11854-11859 appears to have something to do with wordcode > compiled from a function whose body is the single token NULLTOK. I had a little debugging session yesterday evening... I could reproduce the segv with the `prompt' thing (although I had to invoke `prompt bart' a second time with some other command before it to make it go kaboom). I could not, however, see any problems with bld_eprog(). In which way do you think it produces garbled eprogs? (I mean, what do those eprogs look like?) Placing some breakpoints in signals.c, I noticed a) that I think the memory handling there seems to be wrong and b) that I don't understand the control flow (again), so I don't dare to fiddle with it. About a): the freeeprogs() don't seem to get called. See also Felix' last memory leak message (11766), describing a memory leak there. So I think the eprog copied at line 675 somehow survives too long, is freed elsewhere (does signals.c really keep the original?) and later accessed. Or something. (In my reply to 11766 in 11796 I meant to say that maybe Peter should have a look at it, him probably being the only one who really understands what goes on in signals.c or what should go on...) Ok. If you could give me an easy example of how to make bld_eprog() give garbled results, I'd be thankful. Just doing `functions[foo]=""' at least gives me sensible results. Bye Sven -- Sven Wischnowsky wischnow@informatik.hu-berlin.de