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: [EMAIL PROTECTED]
    www:    http://andras.webhop.org/
===========================================================================


Reply via email to