I am data warehouse consultant who
has been working at a large insurance company
for 18 months. On my first
week of work, I downloaded, configured and compiled
emacs for several of the AIX boxes
here. I have been using emacs on one particular
server quite productively for the
last 18 months without any problems. Up until
Thursday of last week.
I took off Friday to attend my 30th
high school reunion and returned to work this
morning. The box had been
booted during my absence: a pre-meditated re-boot so
that a particular software package
(Ab Initio) could be upgraded. Now, emacs no
longer works. In fact, it
dies a horrible death at start-up like this:
tlmitnu1:ddahl>
emacs
Segmentation fault(coredump)
tlmitnu1:ddahl> ls -l
core
-rw-r----- 1 ddahl
abinitio 11360307 Oct 17 12:33 core
If you can provide me any clues or
ideas about things to investigate, I would be
very appreciative. Here is
some additional information.
OS particulars:
tlmitnu1:ddahl> uname -rv
1
5
tlmitnu1:ddahl> uname -a
AIX tlmitnu1 1 5
0029334A4C00
tlmitnu1:ddahl> cat
/etc/motd
*******************************************************************************
*
*
*
*
* Welcome to AIX Version
5.1!
*
*
*
*
*
* Please see the README file in /usr/lpp/bos for information
pertinent to *
* this release of the AIX
Operating
System.
*
*
*
*
*
*******************************************************************************
DEOS
Infrastructure Version 2002-Q2-aix installed (08/13/2003)
DEOS
v2002-3-aixuvscan (09/23/2002)
deos_unix_ECCmstagt_prod_s-2003.1
installed on 10/14/2003
DEOS Infrastructure Version v2004-3-alerts
installed (09/14/2004)
I've run emacs under the debugger
and single-stepped my way to the general area
where the signal happens. In rough
outline, there is a variable (__malloc_hook) found
in src/gmalloc.c and this is supposed to
contain the address of a function. But when
the program attempts to execute code at
this derefeneced address, it finds unreadable
instructions:
tlmitnu1:emacs-21.3> dbx
src/emacs
Type 'help' for help.
reading symbolic information
...
(dbx) stop in main
[1] stop in main
(dbx) run
[1] stopped in
main at line 714 in file "src/emacs.c" ($t1)
714 int skip_args = 0;
(dbx) step
stopped in
main at line 737 in file "src/emacs.c" ($t1)
737 sort_args (argc, argv);
(dbx) step
stopped
in sort_args at line 1651 in file "src/emacs.c"
($t1)
1651 char **new = (char **) xmalloc
(sizeof (char *) * argc);
(dbx) step
stopped in xmalloc at line 519 in
file "src/alloc.c" ($t1)
519
BLOCK_INPUT;
(dbx) step
stopped in xmalloc at line 520 in file
"src/alloc.c" ($t1)
520 val =
(POINTER_TYPE *) malloc (size);
(dbx) step
stopped in gmalloc.malloc
at line 891 in file "src/gmalloc.c" ($t1)
891 if (!__malloc_initialized &&
!__malloc_initialize ())
(dbx) step
stopped in gmalloc.malloc at line
894 in file "src/gmalloc.c" ($t1)
894
return (__malloc_hook != NULL ? *__malloc_hook : _malloc_internal)
(size);
(dbx) print __malloc_hook
0x200e0b9c
(dbx) print
*__malloc_hook
0x2c030000
(dbx) step
Unreadable instruction at
address 0x2c030000
(dbx) where
ptrgl.$PTRGL(??, ??, ??, ??, ??, ??,
??, ??, ??, ??, ??, ??, ??, ??, ??, ??, ??, ??, ??, ??, ) at
0x100adf64
gmalloc.malloc(size = 0), line 894 in
"gmalloc.c"
xmalloc(size = 0), line 520 in "alloc.c"
sort_args(argc =
42308, argv = 0x000c0002), line 1651 in "emacs.c"
main(argc = 0, argv =
(nil), envp = (nil)), line 737 in "emacs.c"
(dbx)
quit
The version of emacs that
I've been using is 21-3. In desperation, I downloaded, configured
and
compiled a new emacs.21-3 but this
newly compiled version failed in the same way as the
original.
Thanks in advance for any help
that you might be able to provide!
-Denny Dahl