[PATCH] realpath stack usage 8k -> 4k
Denys Vlasenko
vda.linux at googlemail.com
Wed May 7 18:56:37 UTC 2008
On Wednesday 07 May 2008 19:11, Carmelo AMOROSO wrote:
> Hi Denys,
> I'm just now playing with uclibc-trunk (linuxthreads.old implementation)
> and discovered
> that your latest change on realpath implementation brakes test-canon
> test from uclibc test-suite.
> Indeed, I've run exactly the same on nptl branch (that contains the
> previous implementation of
> the realpath function) and it works fine.
Looking into it. Learning about uclibc testsuite in the process...
So far I stumbled upon another failure, in gethost_r-align:
# ./gethost_r-align
Testing misalignment of 0 bytes: !!!gethostent_r() gethostbyname_r() gethostbyname2_r() gethostbyaddr_r() OK!
Testing misalignment of 1 bytes: <segfaults here>
# strace ./gethost_r-align
execve("./gethost_r-align", ["./gethost_r-align"], [/* 32 vars */]) = 0
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
write(1, "Testing misalignment of 0 bytes"..., 34Testing misalignment of 0 bytes: ) = 34
brk(0) = 0x8050000
brk(0x8051000) = 0x8051000
open("/etc/hosts", O_RDONLY) = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xffcad248) = -1 ENOTTY (Inappropriate ioctl for device)
read(3, "# This file is automagically reg"..., 1024) = 291
close(3) = 0
open("/etc/resolv.conf", O_RDONLY) = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xffcad168) = -1 ENOTTY (Inappropriate ioctl for device)
read(3, "# This file is automagically reg"..., 1024) = 259
read(3, "", 1024) = 0
close(3) = 0
open("/etc/hosts", O_RDONLY) = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xffcad194) = -1 ENOTTY (Inappropriate ioctl for device)
read(3, "# This file is automagically reg"..., 1024) = 291
close(3) = 0
open("/etc/hosts", O_RDONLY) = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xffcad130) = -1 ENOTTY (Inappropriate ioctl for device)
read(3, "# This file is automagically reg"..., 1024) = 291
close(3) = 0
open("/etc/hosts", O_RDONLY) = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xffcad138) = -1 ENOTTY (Inappropriate ioctl for device)
read(3, "# This file is automagically reg"..., 1024) = 291
close(3) = 0
write(1, "!!!gethostent_r() gethostbyname_"..., 77!!!gethostent_r() gethostbyname_r() gethostbyname2_r() gethostbyaddr_r() OK!
) = 77
write(1, "Testing misalignment of 1 bytes"..., 34Testing misalignment of 1 bytes: ) = 34
close(-1) = -1 EBADF (Bad file descriptor)
open("/etc/hosts", O_RDONLY) = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xffcad194) = -1 ENOTTY (Inappropriate ioctl for device)
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Will look into relapath() problem in a second. Stay tuned.
--
vda
More information about the uClibc
mailing list