| delorie.com/archives/browse.cgi | search |
| X-Authentication-Warning: | delorie.com: mail set sender to djgpp-bounces using -f |
| Subject: | That BASH crash, revisited |
| To: | djgpp AT delorie DOT com |
| X-Mailer: | Lotus Notes Release 6.5.4 CCH5 September 12, 2005 |
| Message-ID: | <OF61A52282.CB39175D-ON872571C4.006931B1-872571C4.0070EA32@seagate.com> |
| From: | Gordon DOT Schumacher AT seagate DOT com |
| Date: | Tue, 8 Aug 2006 14:34:54 -0600 |
| X-MIMETrack: | Serialize by Router on SV-GW1/Seagate Internet(Release 7.0.1 HF29|March 07, 2006) at |
| 08/08/2006 01:33:39 PM | |
| MIME-Version: | 1.0 |
| X-Proofpoint-FWRule: | outbound2 |
| X-Proofpoint-Virus-Version: | vendor=fsecure engine=4.64.4171:2.3.9,1.2.33,4.0.164 definitions=2006-08-08_04:2006-08-08,2006-08-04,2006-08-08 signatures=0 |
Long ago, I wrote about a crash in shell-scripts related
to "return" from a BASH function:
http://www.delorie.com/djgpp/mail-archives/thread.cgi?msg=djgpp/2004/05/09/05:01:32&mode=frames
http://www.delorie.com/djgpp/mail-archives/thread.cgi?msg=djgpp/2004/05/10/13:02:56&mode=frames
I've now been working with this stuff enough - and my new
job has afforded me the time - that I've been able to
reproduce it in a very short script.
It appears to require the use of command substitution -
of any kind - from within a function:
#!/bin/sh
func()
{
echo Calling out to the world...
echo `uname`
echo Preparing to meet our maker!
return
}
func
This line will also make it crash:
boom=$(uname)
Here's the crashdump, as run through my variant of bfdsymify:
Exiting due to signal SIGSEGV
General Protection Fault at eip=00025f4a
eax=cfcfcfcf ebx=00139d48 ecx=0000000c edx=cfcfcfcf esi=00038ed7
edi=00038ed7
ebp=0012c9d8 esp=0012c9c0 program=c:\djgpp\bin\bash.exe
cs: sel=01ff base=02b70000 limit=0014ffff
ds: sel=0207 base=02b70000 limit=0014ffff
es: sel=0207 base=02b70000 limit=0014ffff
fs: sel=01d7 base=0000de50 limit=0000ffff
gs: sel=0217 base=00000000 limit=0010ffff
ss: sel=0207 base=02b70000 limit=0014ffff
App stack: [0012d668..000ad668] Exceptn stack: [000accac..000aad6c]
Call frame traceback EIPs:
0x00025f4a hash_search
c:/djgpp/src/bash-2.05b/djbuild/../hashlib.c:175
0x000154af kill_all_local_variables
c:/djgpp/src/bash-2.05b/djbuild/../variables.c:1347
0x00015516 var_lookup
c:/djgpp/src/bash-2.05b/djbuild/../variables.c:1360
0x00015548 find_variable_internal
c:/djgpp/src/bash-2.05b/djbuild/../variables.c:1393
0x000155b0 find_variable
c:/djgpp/src/bash-2.05b/djbuild/../variables.c:1405
0x00038f99 nofork_restore_all_environment
c:/djgpp/src/bash-2.05b/djbuild/../nofork.c:249
0x0001ec43 command_substitute
c:/djgpp/src/bash-2.05b/djbuild/../subst.c:3926
0x00021461 expand_string_unsplit_to_string
c:/djgpp/src/bash-2.05b/djbuild/../subst.c:6120
0x0013bdc8 __tty_screen
??:0
0x000549e1 inttostr
../../../lib/sh/itos.c:39
Any thoughts? Let me know what else I can do to help
debug this.
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |