NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: port-i386/46884: Compaq Armada E500 not booting 6.0 RC1
The following reply was made to PR port-i386/46884; it has been noted by GNATS.
From: Robert Doerfler <rodo%bloerp.de@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc:
Subject: Re: port-i386/46884: Compaq Armada E500 not booting 6.0 RC1
Date: Thu, 6 Sep 2012 06:33:16 +0200
* matthew green <mrg%eterna.com.au@localhost> [120905 21:45]:
> The following reply was made to PR port-i386/46884; it has been noted by
> GNATS.
>
> From: matthew green <mrg%eterna.com.au@localhost>
> To: gnats-bugs%NetBSD.org@localhost
> Cc: port-i386-maintainer%netbsd.org@localhost,
> gnats-admin%netbsd.org@localhost,
> netbsd-bugs%netbsd.org@localhost, rodo%bloerp.de@localhost
> Subject: re: port-i386/46884: Compaq Armada E500 not booting 6.0 RC1
> Date: Thu, 06 Sep 2012 05:42:00 +1000
>
> OK, so these show that:
>
> config_cfdriver_lookup+0x1e
> config_cfattach_lookup
> config_match
> config_search_loc
> config_found_sm_loc
> config_found
> audio_attach_mi
> esm_attach
>
> is the stack trace. and this is the code and asm:
>
> struct cfdriver *
> config_cfdriver_lookup(const char *name)
> {
> struct cfdriver *cd;
>
> LIST_FOREACH(cd, &allcfdrivers, cd_list) {
> if (STREQ(cd->cd_name, name))
> return cd;
> }
>
> return NULL;
> }
>
> Dump of assembler code for function config_cfdriver_lookup:
> 0xc077fbf5 <+0>: push %ebp
> 0xc077fbf6 <+1>: mov %esp,%ebp
> 0xc077fbf8 <+3>: push %edi
> 0xc077fbf9 <+4>: push %esi
> 0xc077fbfa <+5>: push %ebx
> 0xc077fbfb <+6>: sub $0x1c,%esp
> 0xc077fbfe <+9>: mov 0x8(%ebp),%edi
> 0xc077fc01 <+12>: mov 0xc0c3ecd0,%ebx
> 0xc077fc07 <+18>: test %ebx,%ebx
> 0xc077fc09 <+20>: je 0xc077fc2d <config_cfdriver_lookup+56>
> 0xc077fc0b <+22>: movzbl (%edi),%esi
> 0xc077fc0e <+25>: mov 0x10(%ebx),%eax
> 0xc077fc11 <+28>: mov %esi,%edx
> >> 0xc077fc13 <+30>: cmp %dl,(%eax)
> 0xc077fc15 <+32>: jne 0xc077fc27 <config_cfdriver_lookup+50>
> 0xc077fc17 <+34>: mov %edi,0x4(%esp)
> 0xc077fc1b <+38>: mov %eax,(%esp)
> 0xc077fc1e <+41>: call 0xc0906af0 <strcmp>
> 0xc077fc23 <+46>: test %eax,%eax
> 0xc077fc25 <+48>: je 0xc077fc2d <config_cfdriver_lookup+56>
> 0xc077fc27 <+50>: mov (%ebx),%ebx
> 0xc077fc29 <+52>: test %ebx,%ebx
> 0xc077fc2b <+54>: jne 0xc077fc0e <config_cfdriver_lookup+25>
> 0xc077fc2d <+56>: mov %ebx,%eax
> 0xc077fc2f <+58>: add $0x1c,%esp
> 0xc077fc32 <+61>: pop %ebx
> 0xc077fc33 <+62>: pop %esi
> 0xc077fc34 <+63>: pop %edi
> 0xc077fc35 <+64>: pop %ebp
> 0xc077fc36 <+65>: ret
>
> >> marks the faulting instruction. so something is wrong with
> the allcfdrivers list here, i think. robo, can you run these
> command from the db> prompt:
Sure, here they are:
> db> p $eax
4b26
> db> x 0xc0bc2bfd
netbsd:gcscide_cd+0x1d: e0c09082
> the STREQ() macro checks that the first char matches first, before
> calling strcmp() directly (side comment: this seems like a strange
> optimisation for autoconf code.)
>
> i'm not sure what is happening here, but the allcfdrivers list
> appears broken some how. or perhaps a cfdriver entry. i don't
> know autoconf code very well.
Home |
Main Index |
Thread Index |
Old Index