bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ext2fs.static


From: Alfred M. Szmidt
Subject: ext2fs.static
Date: Sat, 24 Sep 2005 18:54:32 +0200

Currently, ext2fs.static fails as follows:

(gdb) rr
ext2fs.static: ../../src/libdiskfs/init-main.c:40: diskfs_init_main: Unexpected 
error: Invalid argument.

Program received signal SIGABRT, Aborted.
0x080b3a0c in mach_msg_trap () at lock-intern.h:77
77      lock-intern.h: No such file or directory.
        in lock-intern.h
(gdb) bt full
#0  0x080b3a0c in mach_msg_trap () at lock-intern.h:77
No locals.
#1  0x08080e17 in __mach_msg (msg=0x101f7c4, option=3, send_size=48, 
    rcv_size=32, rcv_name=108, timeout=0, notify=0) at msg.c:110
        ret = Variable "ret" is not available.
(gdb) bt
#0  0x080b3a0c in mach_msg_trap () at lock-intern.h:77
#1  0x08080e17 in __mach_msg (msg=0x101f7c4, option=3, send_size=48, 
    rcv_size=32, rcv_name=108, timeout=0, notify=0) at msg.c:110
#2  0x080fd6da in __msg_sig_post (process=0, signal=0, sigcode=0, refport=0)
    at 
/home/ams/glibc/obj--with-binutils-2.15--gcc-4.0.1/hurd/RPC_msg_sig_post.c:144
#3  0x080c6701 in kill_pid.6530 () at hashval.h:43
#4  0x080c6880 in __kill (pid=2412, sig=0) at ../sysdeps/mach/hurd/kill.c:139
#5  0x080c6022 in raise (sig=6) at ../sysdeps/posix/raise.c:27
#6  0x08090b63 in abort () at ../sysdeps/generic/abort.c:88
#7  0x0808c059 in __assert_perror_fail (errnum=1073741846, 
    file=0x810f594 "../../src/libdiskfs/init-main.c", line=40, 
    function=0x812e5d4 "diskfs_init_main") at assert-perr.c:78
#8  0x0805564f in diskfs_init_main (startup_argp=Variable "startup_argp" is not 
available.
)
    at ../../src/libdiskfs/init-main.c:40
#9  0x0804b829 in main (argc=1, argv=0x101fe04)
    at ../../src/ext2fs/ext2fs.c:172

To be precies, it fails in libstore/argp.c:find_class() since
__start_store_std_classes and __stop_store_std_classes simply don't
exist (i.e. they don't point to anything valid):

(gdb) b find_class
Reading in symbols for ../../src/libstore/argp.c...done.
Breakpoint 1 at 0x807041e: file ../../src/libstore/argp.c, line 240.
(gdb) rr

Breakpoint 1, find_class (name=0x81115ff "query", classes=0x0)
    at ../../src/libstore/argp.c:240
240       for (cl = classes ?: __start_store_std_classes;
(gdb) p __start_store_std_classes
Address of symbol "__start_store_std_classes" is unknown.
(gdb) p __stop_store_std_classes
Address of symbol "__stop_store_std_classes" is unknown.

So we end up doing the following which is simply wrong:

(gdb) n
241            classes ? *cl != 0 : cl < __stop_store_std_classes;
(gdb) 
247       if (! classes && store_module_find_class)
(gdb) 
251             return cl;
(gdb) 
255     }

And from here, everything goes bonkers.  What should happen in in
find_class() if everything is wroking as it should is:

(gdb) b find_class
Breakpoint 1 at 0x8072fb2: file 
/build/mbanck/hurd-20050513/build-tree/hurd/libstore/argp.c, line 240.
(gdb) dir /home/ams/hurd/src/libstore
Source directories searched: /home/ams/hurd/src/libstore:$cdir:$cwd
(gdb) rr
warning: shared library handler failed to enable breakpoint

Breakpoint 1, find_class (name=0x810df75 "query", classes=0x0)
    at /build/mbanck/hurd-20050513/build-tree/hurd/libstore/argp.c:240
warning: Source file is more recent than executable.

240       for (cl = classes ?: __start_store_std_classes;
(gdb) p __start_store_std_classes
$1 = 0x8128bc4
(gdb) p __stop_store_std_classes
$2 = 0x8128bf4
(gdb) n
0x08073043      240       for (cl = classes ?: __start_store_std_classes;
(gdb) 
243         if ((*cl)->name && strcmp (name, (*cl)->name) == 0)
(gdb) 
244           return *cl;
(gdb) 
255     }

And we return something sane in CL.  Pointers to a soultion are
welcome.

Phew...




reply via email to

[Prev in Thread] Current Thread [Next in Thread]