zsh-workers
 help / color / mirror / code / Atom feed
From: Zoltan Hidvegi <hzoli@cs.elte.hu>
To: schaefer@z-code.ncd.com
Cc: zsh-workers@math.gatech.edu
Subject: Re: BUG: useheap in doexpandhist()
Date: Mon, 24 Jun 1996 21:11:47 +0200 (MET DST)	[thread overview]
Message-ID: <199606241911.VAA05764@bolyai.cs.elte.hu> (raw)
In-Reply-To: <960624112616.ZM1735@zyrcon.z-code.com> from "Barton E. Schaefer" at "Jun 24, 96 11:26:15 am"

> On Jun 22,  1:12pm, Bart Schaefer wrote:
> } Subject: BUG: useheap in doexpandhist()
> }
> } I just got (in beta21):
> } 
> } 	BUG: useheap in doexpandhist()
> } 
> } in the middle of completing the name of a zsh function.  It happened only
> } once, and I can't seem to make it happen again.
> 
> I've gotten it several more times now, always in completion but not always
> in the name of a function.  I can't yet isolate any preceding usages that
> trigger it.  It may have something to do with that TMOUT=10 TRAPALRM that
> I posted a few days ago.

Unfortunately there are some zsh functions which are not reentrant which
cause problems when a signal comes.  There are two solutions.  The best
would be make evry function which might be used when executing a trap
(which is practically all functions) reentrant.  This whould be a big and
difficult change.  The other solution is to queue signals in most cases and
process them in some well-defined cases.  The problem with this approach is
clearly that in some cases the shell will not respond immediately to the
signal.

But for your problem the patch below may help.  It does not solve the
problem with signals unfortunately (just try
trap 'echo interrupt' INT ; while true ; do ; done and hit ^C a few times
quickly and BUG's will come).

About the patch below: Peter suggested a stack for permalloc()/lastalloc().
This is not a bad idea but maybe it's not the best.  In most places of the
code either only permanent or only heap allocation is valid.  Also almost
always ncalloc, alloc, dupstrig are used to get space from the heap.  The
most important exeptions are the various dup*** routines and the routines
for creating new structures.  Perhaps a better solution is to use
halloc()/hcalloc() where the heap should be used and define a new function
as a replacement for dupstring() which always uses the heap.  An other
solution is using heapalloc()/permalloc() in all cases where the state of
the allocation is unknown or know to be wrong.

And does anyone know the historical reason why ncalloc refers to
halloc/zalloc and alloc refers to hcalloc/zcalloc?  This is exactly the
opposite of the logical behaviour.

Zoltan

*** Src/signals.c	1996/05/02 23:41:23	2.3
--- Src/signals.c	1996/06/24 15:26:36
***************
*** 684,689 ****
--- 684,690 ----
      LinkList args;
      char *name, num[4];
      int sav = sigtrapped[sig];
+     int luh;
   
      /* if signal is being ignored or the trap function		      *
       * is NULL, then return					      *
***************
*** 699,704 ****
--- 700,706 ----
      sigtrapped[sig] = 2;
  
      lexsave();
+     luh = useheap;
      permalloc();
      args = newlinklist();
      name = (char *) zalloc(5 + strlen(sigs[sig]));
***************
*** 707,713 ****
--- 709,718 ----
      sprintf(num, "%d", sig);
      addlinknode(args, num);
      trapreturn = -1;
+     heapalloc();
      doshfunc(sigfuncs[sig], args, 0, 1);
+     if (!luh)
+ 	permalloc();
      lexrestore();
      freelinklist(args, (FreeFunc) NULL);
      zsfree(name);
*** Src/exec.c	1996/06/21 10:12:47	2.43
--- Src/exec.c	1996/06/24 15:22:55
***************
*** 2364,2369 ****
--- 2364,2370 ----
      List xexitfn;
      char saveopts[OPT_SIZE];
  
+     MUSTUSEHEAP("doshfunc");
      pushheap();
      oldlastval = lastval;
      xexittr = sigtrapped[SIGEXIT];



  reply	other threads:[~1996-06-24 19:27 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-04-10 10:31 History file locking? Russell Senior
1996-04-10 12:12 ` Zefram
1996-04-10 12:41   ` Zoltan Hidvegi
1996-04-10 12:50     ` Zefram
     [not found]       ` <A.Main@dcs.warwick.ac.uk>
1996-04-10 16:26         ` Barton E. Schaefer
1996-04-10 17:08           ` Anthony Heading
     [not found]             ` <aheading@jpmorgan.com>
1996-04-10 17:12               ` Barton E. Schaefer
1996-04-10 18:03                 ` Anthony Heading
1996-06-05 21:25         ` Builtin append() and prepend() to PATH, CDPATH, etc Bart Schaefer
     [not found]           ` <schaefer@candle.brasslantern.com>
1996-06-10 19:22             ` Clinton Bunch
1996-06-10 19:54               ` Bart Schaefer
1996-06-10 20:24                 ` Hrvoje Niksic
1996-06-10 20:58             ` Clinton Bunch
1996-06-24 18:26             ` BUG: useheap in doexpandhist() Barton E. Schaefer
1996-06-24 19:11               ` Zoltan Hidvegi [this message]
1996-06-24 21:20                 ` Barton E. Schaefer
1996-06-25  0:01                   ` Zoltan Hidvegi
1996-06-25  0:22                     ` Barton E. Schaefer
1996-07-23 20:01             ` Bug in case stmt with '(' Morris M. Siegel
1996-07-23 21:55               ` Bart Schaefer
1996-07-24  8:29                 ` Zefram
1996-07-24  9:52                 ` Peter Stephenson
1996-07-24 11:10         ` Bart Schaefer
1996-07-24 14:16           ` Zoltan Hidvegi
1996-04-10 21:21       ` History file locking? Zoltan Hidvegi
  -- strict thread matches above, loose matches on Subject: below --
2001-04-27 19:54 comptest* failed to load module: zsh/termcap Peter Whaite
2001-04-28  6:10 ` Bart Schaefer
2001-04-28  8:55   ` Andrej Borsenkow
2001-04-30 15:44     ` Peter Whaite
2001-04-30 16:30       ` Bart Schaefer
2001-04-30 16:47         ` Andrej Borsenkow
2001-04-30 17:16           ` PATCH: " Bart Schaefer
2001-04-30 18:54         ` Peter Whaite
2001-04-30 19:12           ` Bart Schaefer
2001-04-30 15:32   ` Peter Whaite
1997-01-31 10:47 history-search-backward Peter Stephenson
1997-01-31 12:16 ` history-search-backward Zefram
1997-01-31 12:42   ` history-search-backward Peter Stephenson
1997-01-31 15:02     ` history-search-backward Bart Schaefer
1997-01-31 15:23       ` history-search-backward Vinnie Shelton
1997-01-31 19:02     ` history-search-backward Zoltan Hidvegi
1997-01-31 19:13 ` history-search-backward Wayne Davison
1996-12-13  2:30 fifo configure check Zoltan Hidvegi
1996-10-31 14:41 Parameter expansion bug? Anthony Heading
1996-10-31 15:13 ` Hrvoje Niksic
1996-10-31 16:12 ` Zoltan Hidvegi
1996-10-31 20:49   ` Anthony Heading
     [not found] <17651.199607222123@stone.dcs.warwick.ac.uk>
1996-07-23 14:08 ` Bug in case stmt with '(' Zoltan Hidvegi
1996-07-23 16:25   ` Bart Schaefer
1996-06-22 20:12 BUG: useheap in doexpandhist() Bart Schaefer
1996-06-02 17:59 Builtin append() and prepend() to PATH, CDPATH, etc Fung-Chai Lim
1996-06-02 21:26 ` Zoltan Hidvegi
     [not found]   ` <1062.199606041027@stone.dcs.warwick.ac.uk>
1996-03-12 19:03 Buffered stderr on Linux Zoltan Hidvegi
1996-03-12 19:24 ` Bart Schaefer
1996-03-12 20:26   ` Zoltan Hidvegi
1996-03-12 23:17   ` Zoltan Hidvegi
1996-03-13  0:16     ` Steven L Baur
     [not found]     ` <hzoli@cs.elte.hu>
1996-03-16 18:46       ` Bart Schaefer
1996-04-10 21:41       ` History file locking? Barton E. Schaefer
1996-04-10 22:16         ` Daniel Dignam
1996-06-26 13:51       ` Use of qualifiers without glob pattern? Bart Schaefer
1996-06-26 14:01         ` Regression tests Bas V. de Bakker
1996-06-26 14:52         ` Use of qualifiers without glob pattern? Zoltan Hidvegi
1996-06-26 15:54           ` Bart Schaefer
1996-06-27  1:03             ` Zoltan Hidvegi
1996-10-31 16:55       ` Parameter expansion bug? Bart Schaefer
1996-10-31 16:57         ` Hrvoje Niksic
1996-10-31 17:04         ` Zoltan Hidvegi
1996-10-31 17:47           ` Bart Schaefer
1996-12-13  3:37       ` fifo configure check Bart Schaefer
1996-12-13  8:58         ` fifo configure check (seems to work here: Solaris 2.4) C. v. Stuckrad
1996-12-13 14:44         ` fifo configure check Zefram
1996-12-13 17:33           ` Zoltan Hidvegi
     [not found]       ` <wayne@clari.net>
1997-01-31 22:01         ` history-search-backward Bart Schaefer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=199606241911.VAA05764@bolyai.cs.elte.hu \
    --to=hzoli@cs.elte.hu \
    --cc=schaefer@z-code.ncd.com \
    --cc=zsh-workers@math.gatech.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).