Hi Brian,
>From the location of the failure (the SEGV), it sounds as if the block
alligator might not have been initialized properly. The alloc.c module
you refer to is actually lib/liballoc/alloc.c. It's a local block alligator
that allows us to track blocks that might need to be freed in the event of
a longjmp call (because someone hit Ctrl-C during command output). Make sure
you are calling init_liballoc() during your initialization in the main()
function. Also make sure you are passing the correct parameters to the
function (the parameter list changed a while back). The other possibility
is that you are walking off the end of a memory block and trashing memory
behind it. I say this because, at the point where you blow up, you are
dealing with the liballoc control structure memory (which contains a bad
pointer).
Let me know what you find,
Tom
Brian Hall wrote:
>
> Dump of cmdset[] is attached. Appears to match the cmdset table in cmds.c
> exactly.
>
> I haven't altered the list of commands in cmds.c at all. I suspect the problem
> is I have missed something in replacing the i386 stuff with Alpha functions. I
> haven't changed all the function names that start with "i386", etc but that is
> just cosmetic.
>
> On 26-Apr-2000 Matt D. Robinson wrote:
> > On Wed, 26 Apr 2000, Brian Hall wrote:
> >|>OK, Alpha lcrash is dying before it gets very far. Any ideas why it can't
> >|>access the memory in question?
> >|>
> >|>I can see where not being able to access memory being asked for causes a
> >|>segfault, but why the report about "alloc.c: No such file or directory" ?
> >
> > This is probably due to 'gdb's understanding of where alloc.c is
> > found.
> >
> > Looking at this stack trace, have you removed any commands as of late
> > that wouldn't have been used? Looks like something may be wrong with
> > the commands structure. Can you dump out the table?
> >
> > --Matt
> >
> >|>[root@dhcp96-180 lcrash]# gdb ./lcrash
> >|>
> >|>(gdb) run map.0 vmdump.0 -d 1
> >|>Starting program: /CDR_UPLOAD/hallb/linux-2.2.13-1.0.3/cmd/lcrash/./lcrash
> >|>map.0 vmdump.0 -d 1
> >|>map = map.0, vmdump = vmdump.0, outfile = stdout
> >|>
> >|>Please wait...................
> >|>
> >|>Program received signal SIGSEGV, Segmentation fault.
> >|>0x12001b110 in enqueue (list=0x1202fc1b8, new=0x20300000) at alloc.c:57
> >|>57 alloc.c: No such file or directory.
> >|>(gdb) where full
> >|>#0 0x12001b110 in enqueue (list=0x1202fc1b8, new=0x20300000) at alloc.c:57
> >|> head = (element_t *) 0x0
> >|>#1 0x12001c154 in get_page (index=4) at alloc.c:438
> >|> i = 0
> >|> b = (block_t *) 0x20300000
> >|> page = (void *) 0x12001c624
> >|> p = (page_t *) 0x1202fc1a0
> >|>#2 0x12001cacc in alloc_block (size=80, flag=2, ra=0x1e) at alloc.c:695
> >|> i = 4
> >|> j = 1
> >|> blk = (void *) 0xfffffffff7f7ffdb
> >|> p = (page_t *) 0x11ffffad0
> >|> b = (block_t *) 0x0
> >|>#3 0x1200038c8 in kl_block_alloc_func (size=80, flag=2, ra=0x1e) at
> >|>#util.c:279
> >|> b = (void *) 0x12002be14
> >|>#4 0x12002be6c in _kl_alloc_block (size=80, flags=2, ra=0x1e) at
> >|>#kl_alloc.c:22
> >|> blk = (void *) 0x120003d4c
> >|>#5 0x120003d6c in register_cmds (cmds=0x120144aa8) at command.c:17
> >|> i = 0
> >|> ret = 1
> >|> max_depth = 539896352
> >|> cmd_rec = (cmd_rec_t *) 0x0
> >|>#6 0x120002b20 in main (argc=5, argv=0x11ffffbb8) at main.c:200
> >|> i = 5
> >|> c = 512
> >|> errflg = 0
> >|>(gdb) p *list
> >|>$1 = (element_t *) 0x0
> >|>(gdb) p head
> >|>$2 = (element_t *) 0x0
> >|>(gdb) p new
> >|>$3 = (element_t *) 0x20300000
> >|>(gdb) p (head = *list)
> >|>$4 = (element_t *) 0x0
> >|>(gdb) p new
> >|>$5 = (element_t *) 0x20300000
> >|>(gdb) p new->next
> >|>Cannot access memory at address 0x20300000.
> >|>(gdb) p new->prev
> >|>Cannot access memory at address 0x20300008.
> >|>(gdb) p *list = new
> >|>$6 = (element_t *) 0x20300000
> >|>(gdb) p new->next
> >|>Cannot access memory at address 0x20300000.
> >|>(gdb) p new->prev
> >|>Cannot access memory at address 0x20300008.
> >|>
> >|>--
> >|>http://www.bigfoot.com/~brihall
> >|>Linux Consultant
> >|>
>
> --
> http://www.bigfoot.com/~brihall
> Linux Consultant
>
>
> --------------------------------------------------------------------------------
> Name: cmd.table
> cmd.table Type: unspecified type (application/octet-stream)
> Encoding: quoted-printable
> Description: cmd.table
|