Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 8 Sep 1998 19:24:09 +0000
From:      dmaddox@scsn.net (Donald J. Maddox)
To:        current@FreeBSD.ORG
Subject:   Coredumping vmstat
Message-ID:  <19980908192409.A1858@scsn.net>

next in thread | raw e-mail | index | archive | help
    Vmstat, iostat (and maybe others) are coredumping when compiled ELF
(others have reported that they work ok when aout)...

    The problem in vmstat occurs at line 361:

        for (i = 0; i < dk_ndrive && ndrives < 4; i++) {
                if (dr_select[i])
                        continue;
                for (cp = defdrives; *cp; cp++)
                        if (strcmp(dr_name[i], *cp) == 0) {
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                dr_select[i] = 1;
                                ++ndrives;
                                break;


This code apparently expects *cp to be 0 at the end of the 'defdrives'
list, but instead it gets 0xffffffff, and this causes a bus error.

>From gdb:
.
.
.
364                                     break;
(gdb) 
357             for (i = 0; i < dk_ndrive && ndrives < 4; i++) {
(gdb) 
358                     if (dr_select[i])
(gdb) 
360                     for (cp = defdrives; *cp; cp++)
(gdb) 
361                             if (strcmp(dr_name[i], *cp) == 0) {
(gdb) 
360                     for (cp = defdrives; *cp; cp++)
(gdb) 
361                             if (strcmp(dr_name[i], *cp) == 0) {
(gdb) 
360                     for (cp = defdrives; *cp; cp++)
(gdb) p *cp
$1 = 0x804a375 "wd1"
(gdb) s
361                             if (strcmp(dr_name[i], *cp) == 0) {
(gdb) 
360                     for (cp = defdrives; *cp; cp++)
(gdb) p *cp
$2 = 0x804a371 "sd0"
(gdb) s
361                             if (strcmp(dr_name[i], *cp) == 0) {
(gdb) p *cp
$3 = 0x804a36d "sd1"
(gdb) s
360                     for (cp = defdrives; *cp; cp++)
(gdb) s
361                             if (strcmp(dr_name[i], *cp) == 0) {
(gdb) p *cp
$4 = 0xffffffff <Error reading address 0xffffffff: Invalid argument>
(gdb)
.
.
.

Coredump on the next step...
Anybody have any idea what's going on here?

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19980908192409.A1858>