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

Bug#219769: libc6-2.3.2.ds1-10 on ARM breaks modutils



Package: libc6
Version: 2.3.2.ds1-10
Severity: grave
Arch: ARM


After upgrading libc6 on an ARM-based handheld running "sarge" to
"sid", all programs in modutils (lsmod, for instance), issue an error
"lsmod: QM_MODULES: Function not implemented" and exit when run as
root. When run as non-root, lsmod runs expected, the other commands
(modprobe, insmod) fail with the QM_MODULES error message.

Here is the output of "strace lsmod" when run as root:

> execve("/sbin/lsmod", ["lsmod"], [/* 15 vars */]) = 0
> uname({sys="Linux", node="cirrus", ...}) = 0
> brk(0)                                  = 0x28494
> access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
> open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or directory)
> open("/etc/ld.so.cache", O_RDONLY)      = 3
> fstat64(3, {st_mode=S_IFREG|0644, st_size=11129, ...}) = 0
> old_mmap(NULL, 11129, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40015000
> close(3)                                = 0
> access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
> open("/lib/libc.so.6", O_RDONLY)        = 3
> read(3, "\177ELF\1\1\1a\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0(t\1\0004"..., 512) = 512
> fstat64(3, {st_mode=S_IFREG|0644, st_size=1166132, ...}) = 0
> old_mmap(NULL, 1202940, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4001e000
> old_mmap(0x40136000, 49152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x110000) = 0x40136000
> old_mmap(0x40142000, 6908, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40142000
> close(3)                                = 0
> munmap(0x40015000, 11129)               = 0
> brk(0)                                  = 0x28494
> brk(0x49494)                            = 0x49494
> brk(0)                                  = 0x49494
> brk(0x4a000)                            = 0x4a000
> open("/proc/sys/kernel/tainted", O_RDONLY) = 3
> fstat64(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
> old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40015000
> read(3, "1\n", 4096)                    = 2
> close(3)                                = 0
> munmap(0x40015000, 4096)                = 0
> brk(0)                                  = 0x4a000
> brk(0)                                  = 0x4a000
> brk(0x49000)                            = 0x49000
> brk(0)                                  = 0x49000
> fstat64(1, {st_mode=S_IFREG|0644, st_size=1891, ...}) = 0
> old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40015000
> getuid32()                              = 0
> write(2, "lsmod: ", 7lsmod: )                  = 7
> write(2, "QM_MODULES: Function not impleme"..., 37QM_MODULES: Function not implemented
> ) = 37
> write(2, "\n", 1
> )                       = 1
> write(1, "Module                  Size  Us"..., 54Module                  Size  Used by    Tainted: P  
> ) = 54
> munmap(0x40015000, 4096)                = 0
> io_submit(0x1, 0, 0xfbad2088)           = -1 ENOSYS (Function not implemented)
> _exit(1)                                = ?

Here is the same for a non-root user (uid 1000):

> execve("/sbin/lsmod", ["/sbin/lsmod"], [/* 14 vars */]) = 0
> uname({sys="Linux", node="cirrus", ...}) = 0
> brk(0)                                  = 0x28494
> access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
> open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or directory)
> open("/etc/ld.so.cache", O_RDONLY)      = 3
> fstat64(3, {st_mode=S_IFREG|0644, st_size=11129, ...}) = 0
> old_mmap(NULL, 11129, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40015000
> close(3)                                = 0
> access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
> open("/lib/libc.so.6", O_RDONLY)        = 3
> read(3, "\177ELF\1\1\1a\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0(t\1\0004"..., 512) = 512
> fstat64(3, {st_mode=S_IFREG|0644, st_size=1166132, ...}) = 0
> old_mmap(NULL, 1202940, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4001e000
> old_mmap(0x40136000, 49152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x110000) = 0x40136000
> old_mmap(0x40142000, 6908, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40142000
> close(3)                                = 0
> munmap(0x40015000, 11129)               = 0
> brk(0)                                  = 0x28494
> brk(0x49494)                            = 0x49494
> brk(0)                                  = 0x49494
> brk(0x4a000)                            = 0x4a000
> open("/proc/sys/kernel/tainted", O_RDONLY) = 3
> fstat64(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
> old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40015000
> read(3, "1\n", 4096)                    = 2
> close(3)                                = 0
> munmap(0x40015000, 4096)                = 0
> brk(0)                                  = 0x4a000
> brk(0)                                  = 0x4a000
> brk(0x49000)                            = 0x49000
> brk(0)                                  = 0x49000
> fstat64(1, {st_mode=S_IFREG|0644, st_size=1897, ...}) = 0
> old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40015000
> getuid32()                              = 1000
> write(1, "Module                  Size  Us"..., 54Module                  Size  Used by    Tainted: P  
> ) = 54
> open("/proc/modules", O_RDONLY)         = 3
> read(3, "sharp_mmcsd_m          25888   1"..., 100) = 100
> write(1, "sharp_mmcsd_m          25888   1"..., 100sharp_mmcsd_m          25888   1
> pxa_bi                 21612   0 (unused)
> net_fd                 25) = 100
> read(3, "824   1\nusbdmonitor             "..., 100) = 90
> write(1, "824   1\nusbdmonitor             "..., 90824   1
> usbdmonitor             5216   0
> usbdcore               34608   0 [pxa_bi net_fd]
> ) = 90
> read(3, "", 100)                        = 0
> close(3)                                = 0
> munmap(0x40015000, 4096)                = 0
> io_submit(0, 0, 0xfbad2088)             = -1 ENOSYS (Function not implemented)
> _exit(0)                                = ?

I wasn't able to reproduce this with an x86 desktop computer. The
Linux kernel in use is 2.4.18-rmk7-pxa3-embedix, the patches to 2.4.18
are required to make it work on the special hardware on this machine
(SHARP Zaurus C7x0).

I ranked the bug as "grave" because rebooting the Zaurus with this
libc6 installed and no working version available in internal flash
memory prevents any kind of communication with the device other than
via the keyboard and screen.
 
  Andras

===========================================================================
Major Andras
    e-mail: andras@users.sourceforge.net
    www:    http://andras.webhop.org/
===========================================================================



Reply to: