* Re: Re : Re: Re : [BUG] Crash due to malloc call in signal handler [not found] ` <1548982683.1013827769.1576607530234.JavaMail.root@zimbra62-e11.priv.proxad.net> @ 2019-12-18 10:01 ` Peter Stephenson 2019-12-18 10:44 ` Peter Stephenson 0 siblings, 1 reply; 3+ messages in thread From: Peter Stephenson @ 2019-12-18 10:01 UTC (permalink / raw) To: zsh-workers, Antoine C. On Tue, 2019-12-17 at 19:32 +0100, Antoine C. wrote: > Good news(!), I finally get another crash with a backtrace, despite > Peter's last patch. This one, like the previous, is triggered by debug > code because of two simultaneous free() calls from main and signal > contexts. Great, thanks. OK, the suspect here is the arithmetic code --- it looks like it's running unprotected against signals, despite the fact it can set variables. Arithmetic is a quick operation, so hopefully we can block fairly high up the stack. I should get a chance to look later (but I don't think this is rocket science from this point on so maybe someone will beat me to it). pws > #9 0x000055e115ce40f4 in zhandler (sig=17) at signals.c:648 ... > #23 0x000055e115c7cddf in execarith (state=0x7ffea5b39110, do_exec=0) at exec.c:5111 ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Re : Re: Re : [BUG] Crash due to malloc call in signal handler 2019-12-18 10:01 ` Re : Re: Re : [BUG] Crash due to malloc call in signal handler Peter Stephenson @ 2019-12-18 10:44 ` Peter Stephenson 2019-12-22 18:44 ` Re : " Antoine C. 0 siblings, 1 reply; 3+ messages in thread From: Peter Stephenson @ 2019-12-18 10:44 UTC (permalink / raw) To: zsh-workers, Antoine C. On Wed, 2019-12-18 at 10:01 +0000, Peter Stephenson wrote: > OK, the suspect here is the arithmetic code --- it looks like it's > running unprotected against signals, despite the fact it can set > variables. Arithmetic is a quick operation, so hopefully we can block > fairly high up the stack. I should get a chance to look later > (but I don't think this is rocket science from this point on so maybe > someone will beat me to it). > > pws > > > > > #9 0x000055e115ce40f4 in zhandler (sig=17) at signals.c:648 > ... > > > > #23 0x000055e115c7cddf in execarith (state=0x7ffea5b39110, do_exec=0) at exec.c:5111 Yes, it really does look this simple. All top-level "exec" functions should be able to queue and unqueue signals without side effects, any issues being handled lower down, and execarith() is a good deal simpler than most of the others (which is probably why it never acquired the protection in the first place). I'll commit this fairly quickly --- it's obviously needed and in the event of side effects I'd rather find out sooner than later. pws diff --git a/Src/exec.c b/Src/exec.c index 50027654a..fac095d64 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -5101,6 +5101,7 @@ execarith(Estate state, UNUSED(int do_exec)) mnumber val = zero_mnumber; int htok = 0; + queue_signals(); if (isset(XTRACE)) { printprompt4(); fprintf(xtrerr, "(("); @@ -5120,6 +5121,8 @@ execarith(Estate state, UNUSED(int do_exec)) fprintf(xtrerr, " ))\n"); fflush(xtrerr); } + unqueue_signals(); + if (errflag) { errflag &= ~ERRFLAG_ERROR; return 2; ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re : Re: Re : Re: Re : [BUG] Crash due to malloc call in signal handler 2019-12-18 10:44 ` Peter Stephenson @ 2019-12-22 18:44 ` Antoine C. 0 siblings, 0 replies; 3+ messages in thread From: Antoine C. @ 2019-12-22 18:44 UTC (permalink / raw) To: Peter Stephenson; +Cc: zsh-workers > I'll commit this fairly quickly --- it's obviously needed and in the > event of side effects I'd rather find out sooner than later. > diff --git a/Src/exec.c b/Src/exec.c > index 50027654a..fac095d64 100644 > [...] Just a quick update regarding the malloc crash: I did not experienced any more crash after applying this patch and the previous one. Thanks ! Antoine ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-12-22 18:45 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <CGME20191217183216epcas1p1e81fb3dc675bab810e8d29ac0f53242c@epcas1p1.samsung.com> [not found] ` <1548982683.1013827769.1576607530234.JavaMail.root@zimbra62-e11.priv.proxad.net> 2019-12-18 10:01 ` Re : Re: Re : [BUG] Crash due to malloc call in signal handler Peter Stephenson 2019-12-18 10:44 ` Peter Stephenson 2019-12-22 18:44 ` Re : " Antoine C.
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).