unexpected behaviour of system function "system" in linux in some cases

Apr 18, 2006 1 Replies

Any One can you explanation why this is happening . In the below program In some cases the system command is returning with -1 even the command in the system call had succeded



To have a look i am attaching strace out put also to be clear u can search for XX in the strace output from that point u can make some thing .....


#include #include #include #include


void signalHandler(int i); void thread1();



void thread1() { while(1) sleep(1); }



void main() { int ret =-1; int res =-1; pthread_t th;



res = pthread_create (&th, NULL, thread1, NULL); if (res) { printf ("pthread_create failed %d\n", res); }



signal(SIGCHLD,signalHandler); ret = system("ls systembug.c"); printf("XX the retval %d errno %d \n",ret,errno); }


void signalHandler(int signal) { int stat = 0; int pid = 0; printf("Caught the signal \n"); while ((pid = waitpid(-1, &stat, WNOHANG)) > 0) { printf("Child process exited \n");



} }


STRACE OUTPUT


3333 execve("./a.out", ["./a.out"], [/* 61 vars */]) = 0
3333 uname({sys="Linux", node="WS29P191", ...}) = 0
3333 brk(0) = 0x804a000
3333 open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory)
3333 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40017000
3333 open("/etc/ld.so.cache", O_RDONLY) = 3
3333 fstat64(3, {st_mode=S_IFREG|0644, st_size=106111, ...}) = 0
3333 old_mmap(NULL, 106111, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40018000
3333 close(3) = 0
3333 open("/lib/tls/libpthread.so.0", O_RDONLY) = 3
3333 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360I\0"..., 512) = 512
3333 fstat64(3, {st_mode=S_IFREG|0755, st_size=88272, ...}) = 0
3333 old_mmap(NULL, 65004, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x40032000
3333 madvise(0x40032000, 65004, MADV_SEQUENTIAL|0x1) = 0
3333 old_mmap(0x4003f000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xd000) = 0x4003f000
3333 old_mmap(0x40040000, 7660, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40040000
3333 close(3) = 0
3333 open("/lib/tls/libc.so.6", O_RDONLY) = 3
3333 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@S\1\000"..., 512) =
512
3333 fstat64(3, {st_mode=S_IFREG|0755, st_size=1345545, ...}) = 0
3333 old_mmap(NULL, 1128748, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x40042000
3333 madvise(0x40042000, 1128748, MADV_SEQUENTIAL|0x1) = 0
3333 old_mmap(0x4014b000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x109000) = 0x4014b000
3333 old_mmap(0x40153000, 10540, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40153000
3333 close(3) = 0
3333 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40156000
3333 set_thread_area({entry_number:-1 -> 6, base_addr:0x40156080, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
3333 munmap(0x40018000, 106111) = 0
3333 set_tid_address(0x401560c8) = 3333
3333 rt_sigaction(SIGRTMIN, {0x40036950, [], SA_SIGINFO}, NULL, 8) = 0
3333 rt_sigprocmask(SIG_UNBLOCK, [RTMIN], NULL, 8) = 0
3333 getrlimit(RLIMIT_STACK, {rlim_cur=RLIM_INFINITY, rlim_max=RLIM_INFINITY}) = 0
3333 _sysctl({{CTL_KERN, KERN_VERSION}, 2, 0xbfffef28, 35, (nil), 0}) = 0
3333 mmap2(NULL, 2101248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40157000
3333 brk(0) = 0x804a000
3333 brk(0x806b000) = 0x806b000
3333 brk(0) = 0x806b000
3333 mprotect(0x40157000, 4096, PROT_NONE) = 0
3333 clone(child_stack=0x40357b08, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x40357bf8, {entry_number:6, base_addr:0x40357bb0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}, child_tidptr=0x40357bf8) = 3343
3333 rt_sigaction(SIGCHLD, {0x8048614, [CHLD], SA_RESTART}, {SIG_DFL},
8) = 0
3333 rt_sigaction(SIGINT, {SIG_IGN}, {SIG_IGN}, 8) = 0
3333 rt_sigaction(SIGQUIT, {SIG_IGN}, {SIG_IGN}, 8) = 0
3343 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
3343 rt_sigaction(SIGCHLD, NULL, {0x8048614, [CHLD], SA_RESTART}, 8) =
0
3343 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
3343 nanosleep({1, 0},
3333 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
3333 clone(child_stack=0, flags=CLONE_PARENT_SETTID|SIGCHLD, parent_tidptr=0xbffff024) = 3350
3333 waitpid(3350,
3350 rt_sigaction(SIGINT, {SIG_IGN}, NULL, 8) = 0
3350 rt_sigaction(SIGQUIT, {SIG_IGN}, NULL, 8) = 0
3350 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
3350 execve("/bin/sh", ["sh", "-c", "ls systembug.c"], [/* 61 vars
*
/]) = 0
3350 uname({sys="Linux", node="WS29P191", ...}) = 0
3350 brk(0) = 0x80bb000
3350 open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40017000
3350 open("/etc/ld.so.cache", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=106111, ...}) = 0
3350 old_mmap(NULL, 106111, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40018000
3350 close(3) = 0
3350 open("/lib/libreadline.so.4", O_RDONLY) = 3
3350 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200\260"..., 512) =
512
3350 fstat64(3, {st_mode=S_IFREG|0755, st_size=176736, ...}) = 0
3350 old_mmap(NULL, 178420, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x40032000
3350 madvise(0x40032000, 178420, MADV_SEQUENTIAL|0x1) = 0
3350 old_mmap(0x40059000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x27000) = 0x40059000
3350 old_mmap(0x4005d000, 2292, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4005d000
3350 close(3) = 0
3350 open("/lib/libhistory.so.4", O_RDONLY) = 3
3350 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@\30\0\000"..., 512) =
512
3350 fstat64(3, {st_mode=S_IFREG|0755, st_size=24828, ...}) = 0
3350 old_mmap(NULL, 27568, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x4005e000
3350 madvise(0x4005e000, 27568, MADV_SEQUENTIAL|0x1) = 0
3350 old_mmap(0x40064000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x5000) = 0x40064000
3350 close(3) = 0
3350 open("/lib/libncurses.so.5", O_RDONLY) = 3
3350 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\362"..., 512) =
512
3350 fstat64(3, {st_mode=S_IFREG|0755, st_size=316468, ...}) = 0
3350 old_mmap(NULL, 280780, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x40065000
3350 madvise(0x40065000, 280780, MADV_SEQUENTIAL|0x1) = 0
3350 old_mmap(0x4009e000, 45056, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x38000) = 0x4009e000
3350 old_mmap(0x400a9000, 2252, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x400a9000
3350 close(3) = 0
3350 open("/lib/libdl.so.2", O_RDONLY) = 3
3350 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\33\0\000"..., 512) =
512
3350 fstat64(3, {st_mode=S_IFREG|0755, st_size=13647, ...}) = 0
3350 old_mmap(NULL, 8628, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x400aa000
3350 madvise(0x400aa000, 8628, MADV_SEQUENTIAL|0x1) = 0
3350 old_mmap(0x400ac000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x2000) = 0x400ac000
3350 close(3) = 0
3350 open("/lib/tls/libc.so.6", O_RDONLY) = 3
3350 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@S\1\000"..., 512) =
512
3350 fstat64(3, {st_mode=S_IFREG|0755, st_size=1345545, ...}) = 0
3350 old_mmap(NULL, 1128748, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x400ad000
3350 madvise(0x400ad000, 1128748, MADV_SEQUENTIAL|0x1) = 0
3350 old_mmap(0x401b6000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x109000) = 0x401b6000
3350 old_mmap(0x401be000, 10540, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x401be000
3350 close(3) = 0
3350 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x401c1000
3350 set_thread_area({entry_number:-1 -> 6, base_addr:0x401c1640, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
3350 munmap(0x40018000, 106111) = 0
3350 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
3350 open("/dev/tty", O_RDWR|O_NONBLOCK|O_LARGEFILE) = 3
3350 close(3) = 0
3350 brk(0) = 0x80bb000
3350 brk(0x80dc000) = 0x80dc000
3350 brk(0) = 0x80dc000
3350 open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
3350 open("/usr/share/locale/locale.alias", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=2528, ...}) = 0
3350 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40018000
3350 read(3, "# Locale name alias data base.\n#"..., 4096) = 2528
3350 read(3, "", 4096) = 0
3350 close(3) = 0
3350 munmap(0x40018000, 4096) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_IDENTIFICATION", O_RDONLY) =

-1 ENOENT (No such file or directory)



3350 open("/usr/lib/locale/en_US.utf8/LC_IDENTIFICATION", O_RDONLY) =
3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=365, ...}) = 0
3350 mmap2(NULL, 365, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40018000
3350 close(3) = 0
3350 open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=21512, ...}) = 0
3350 mmap2(NULL, 21512, PROT_READ, MAP_SHARED, 3, 0) = 0x40019000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_MEASUREMENT", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_MEASUREMENT", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=23, ...}) = 0
3350 mmap2(NULL, 23, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4001f000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_TELEPHONE", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_TELEPHONE", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=59, ...}) = 0
3350 mmap2(NULL, 59, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40020000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_ADDRESS", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_ADDRESS", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=155, ...}) = 0
3350 mmap2(NULL, 155, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40021000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_NAME", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_NAME", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=77, ...}) = 0
3350 mmap2(NULL, 77, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40022000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_PAPER", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_PAPER", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=34, ...}) = 0
3350 mmap2(NULL, 34, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40023000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_MESSAGES", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_MESSAGES", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=52, ...}) = 0
3350 mmap2(NULL, 52, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40024000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_MONETARY", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_MONETARY", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=286, ...}) = 0
3350 mmap2(NULL, 286, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40025000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_COLLATE", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_COLLATE", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=882134, ...}) = 0
3350 mmap2(NULL, 882134, PROT_READ, MAP_PRIVATE, 3, 0) = 0x401c2000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_TIME", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_TIME", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=2451, ...}) = 0
3350 mmap2(NULL, 2451, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4029a000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_NUMERIC", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_NUMERIC", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=54, ...}) = 0
3350 mmap2(NULL, 54, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4029b000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_CTYPE", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_CTYPE", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=208464, ...}) = 0
3350 mmap2(NULL, 208464, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4029c000
3350 close(3) = 0
3350 getuid32() = 8082
3350 getgid32() = 5003
3350 geteuid32() = 8082
3350 getegid32() = 5003
3350 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
3350 time(NULL) = 1145378591
3350 open("/etc/mtab", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=519, ...}) = 0
3350 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x402cf000
3350 read(3, "/dev/sda2 / ext3 rw,acl,user_xat"..., 4096) = 519
3350 close(3) = 0
3350 munmap(0x402cf000, 4096) = 0
3350 open("/proc/meminfo", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
3350 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x402cf000
3350 read(3, "MemTotal: 1033388 kB\nMemFre"..., 1024) = 644
3350 close(3) = 0
3350 munmap(0x402cf000, 4096) = 0
3350 rt_sigaction(SIGCHLD, {SIG_DFL}, {SIG_DFL}, 8) = 0
3350 rt_sigaction(SIGCHLD, {SIG_DFL}, {SIG_DFL}, 8) = 0
3350 rt_sigaction(SIGINT, {SIG_DFL}, {SIG_IGN}, 8) = 0
3350 rt_sigaction(SIGINT, {SIG_IGN}, {SIG_DFL}, 8) = 0
3350 rt_sigaction(SIGQUIT, {SIG_DFL}, {SIG_IGN}, 8) = 0
3350 rt_sigaction(SIGQUIT, {SIG_IGN}, {SIG_DFL}, 8) = 0
3350 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
3350 rt_sigaction(SIGQUIT, {SIG_IGN}, {SIG_IGN}, 8) = 0
3350 uname({sys="Linux", node="WS29P191", ...}) = 0
3350 stat64("/home/g20230/tests", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
3350 stat64(".", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
3350 getpid() = 3350
3350 getppid() = 3333
3350 stat64(".", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
3350 stat64("/usr/local/bin/sh", 0xbfffe500) = -1 ENOENT (No such file or directory)
3350 stat64("/usr/bin/sh", 0xbfffe500) = -1 ENOENT (No such file or directory)
3350 stat64("/usr/X11R6/bin/sh", 0xbfffe500) = -1 ENOENT (No such file or directory)
3350 stat64("/bin/sh", {st_mode=S_IFREG|0755, st_size=448312, ...}) =
0
3350 open("/proc/sys/kernel/ngroups_max", O_RDONLY) = 3
3350 read(3, "65536\n", 31) = 6
3350 close(3) = 0
3350 mmap2(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x402cf000
3350 getgroups32(65536, [5003]) = 1
3350 stat64("/bin/sh", {st_mode=S_IFREG|0755, st_size=448312, ...}) =
0
3350 getpgrp() = 3272
3350 rt_sigaction(SIGCHLD, {0x808da10, [], 0}, {SIG_DFL}, 8) = 0
3350 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
3350 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
3350 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
3350 stat64(".", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
3350 stat64("/usr/local/bin/ls", 0xbfffe320) = -1 ENOENT (No such file or directory)
3350 stat64("/usr/bin/ls", 0xbfffe320) = -1 ENOENT (No such file or directory)
3350 stat64("/usr/X11R6/bin/ls", 0xbfffe320) = -1 ENOENT (No such file or directory)
3350 stat64("/bin/ls", {st_mode=S_IFREG|0755, st_size=90559, ...}) = 0
3350 stat64("/bin/ls", {st_mode=S_IFREG|0755, st_size=90559, ...}) = 0
3350 rt_sigaction(SIGINT, {SIG_IGN}, {SIG_IGN}, 8) = 0
3350 rt_sigaction(SIGQUIT, {SIG_IGN}, {SIG_IGN}, 8) = 0
3350 rt_sigaction(SIGCHLD, {SIG_DFL}, {0x808da10, [], 0}, 8) = 0
3350 execve("/bin/ls", ["ls", "systembug.c"], [/* 61 vars */]) = 0
3350 uname({sys="Linux", node="WS29P191", ...}) = 0
3350 brk(0) = 0x805b000
3350 open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40017000
3350 open("/etc/ld.so.cache", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=106111, ...}) = 0
3350 old_mmap(NULL, 106111, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40018000
3350 close(3) = 0
3350 open("/lib/tls/librt.so.1", O_RDONLY) = 3
3350 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0\34\0"..., 512) = 512
3350 fstat64(3, {st_mode=S_IFREG|0755, st_size=36067, ...}) = 0
3350 old_mmap(NULL, 30684, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x40032000
3350 madvise(0x40032000, 30684, MADV_SEQUENTIAL|0x1) = 0
3350 old_mmap(0x40039000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x6000) = 0x40039000
3350 close(3) = 0
3350 open("/lib/libacl.so.1", O_RDONLY) = 3
3350 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260\24"..., 512) = 512
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=31632, ...}) = 0
3350 old_mmap(NULL, 20956, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x4003a000
3350 madvise(0x4003a000, 20956, MADV_SEQUENTIAL|0x1) = 0
3350 old_mmap(0x4003f000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x5000) = 0x4003f000
3350 close(3) = 0
3350 open("/lib/libselinux.so.1", O_RDONLY) = 3
3350 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0003\0"..., 512) = 512
3350 fstat64(3, {st_mode=S_IFREG|0755, st_size=61336, ...}) = 0
3350 old_mmap(NULL, 57140, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x40040000
3350 madvise(0x40040000, 57140, MADV_SEQUENTIAL|0x1) = 0
3350 old_mmap(0x4004c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xb000) = 0x4004c000
3350 close(3) = 0
3350 open("/lib/tls/libc.so.6", O_RDONLY) = 3
3350 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@S\1\000"..., 512) =
512
3350 fstat64(3, {st_mode=S_IFREG|0755, st_size=1345545, ...}) = 0
3350 old_mmap(NULL, 1128748, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x4004e000
3350 madvise(0x4004e000, 1128748, MADV_SEQUENTIAL|0x1) = 0
3350 old_mmap(0x40157000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x109000) = 0x40157000
3350 old_mmap(0x4015f000, 10540, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4015f000
3350 close(3) = 0
3350 open("/lib/tls/libpthread.so.0", O_RDONLY) = 3
3350 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360I\0"..., 512) = 512
3350 fstat64(3, {st_mode=S_IFREG|0755, st_size=88272, ...}) = 0
3350 old_mmap(NULL, 65004, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x40162000
3350 madvise(0x40162000, 65004, MADV_SEQUENTIAL|0x1) = 0
3350 old_mmap(0x4016f000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xd000) = 0x4016f000
3350 old_mmap(0x40170000, 7660, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40170000
3350 close(3) = 0
3350 open("/lib/libattr.so.1", O_RDONLY) = 3
3350 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 \r\0\000"..., 512) = 512
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=14478, ...}) = 0
3350 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40172000
3350 old_mmap(NULL, 13204, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x40173000
3350 madvise(0x40173000, 13204, MADV_SEQUENTIAL|0x1) = 0
3350 old_mmap(0x40176000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x2000) = 0x40176000
3350 close(3) = 0
3350 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40177000
3350 set_thread_area({entry_number:-1 -> 6, base_addr:0x40177080, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
3350 munmap(0x40018000, 106111) = 0
3350 set_tid_address(0x401770c8) = 3350
3350 rt_sigaction(SIGRTMIN, {0x40166950, [], SA_SIGINFO}, NULL, 8) = 0
3350 rt_sigprocmask(SIG_UNBLOCK, [RTMIN], NULL, 8) = 0
3350 getrlimit(RLIMIT_STACK, {rlim_cur=RLIM_INFINITY, rlim_max=RLIM_INFINITY}) = 0
3350 _sysctl({{CTL_KERN, KERN_VERSION}, 2, 0xbfffe6a8, 35, (nil), 0}) = 0
3350 open("/proc/mounts", O_RDONLY) = 3
3350 brk(0) = 0x805b000
3350 brk(0x807d000) = 0x807d000
3350 read(3, "rootfs / rootfs rw 0 0\n/dev/root"..., 4095) = 622
3350 brk(0x807c000) = 0x807c000
3350 close(3) = 0
3350 open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
3350 open("/usr/share/locale/locale.alias", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=2528, ...}) = 0
3350 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40018000
3350 read(3, "# Locale name alias data base.\n#"..., 4096) = 2528
3350 read(3, "", 4096) = 0
3350 close(3) = 0
3350 munmap(0x40018000, 4096) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_IDENTIFICATION", O_RDONLY) =

-1 ENOENT (No such file or directory)



3350 open("/usr/lib/locale/en_US.utf8/LC_IDENTIFICATION", O_RDONLY) =
3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=365, ...}) = 0
3350 mmap2(NULL, 365, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40018000
3350 close(3) = 0
3350 open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=21512, ...}) = 0
3350 mmap2(NULL, 21512, PROT_READ, MAP_SHARED, 3, 0) = 0x40019000
3350 close(3) = 0
3350 futex(0x4015ee6c, FUTEX_WAKE, 2147483647) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_MEASUREMENT", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_MEASUREMENT", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=23, ...}) = 0
3350 mmap2(NULL, 23, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4001f000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_TELEPHONE", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_TELEPHONE", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=59, ...}) = 0
3350 mmap2(NULL, 59, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40020000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_ADDRESS", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_ADDRESS", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=155, ...}) = 0
3350 mmap2(NULL, 155, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40021000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_NAME", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_NAME", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=77, ...}) = 0
3350 mmap2(NULL, 77, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40022000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_PAPER", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_PAPER", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=34, ...}) = 0
3350 mmap2(NULL, 34, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40023000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_MESSAGES", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_MESSAGES", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=52, ...}) = 0
3350 mmap2(NULL, 52, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40024000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_MONETARY", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_MONETARY", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=286, ...}) = 0
3350 mmap2(NULL, 286, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40025000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_COLLATE", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_COLLATE", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=882134, ...}) = 0
3350 mmap2(NULL, 882134, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40178000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_TIME", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_TIME", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=2451, ...}) = 0
3350 mmap2(NULL, 2451, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40250000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_NUMERIC", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_NUMERIC", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=54, ...}) = 0
3350 mmap2(NULL, 54, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40251000
3350 close(3) = 0
3350 open("/usr/lib/locale/en_US.UTF-8/LC_CTYPE", O_RDONLY) = -1 ENOENT (No such file or directory)
3350 open("/usr/lib/locale/en_US.utf8/LC_CTYPE", O_RDONLY) = 3
3350 fstat64(3, {st_mode=S_IFREG|0644, st_size=208464, ...}) = 0
3350 mmap2(NULL, 208464, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40252000
3350 close(3) = 0
3350 open("/proc/filesystems", O_RDONLY) = 3
3350 read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tb"..., 4095) = 253
3350 close(3) = 0
3350 ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig

-icanon -echo ...}) = 0



3350 ioctl(1, TIOCGWINSZ, {ws_row=45, ws_col=126, ws_xpixel=0, ws_ypixel=0}) = 0
3350 stat64("systembug.c", {st_mode=S_IFREG|0644, st_size=684, ...}) =
0
3350 lstat64("systembug.c", {st_mode=S_IFREG|0644, st_size=684, ...}) = 0
3350 socket(PF_UNIX, SOCK_STREAM, 0) = 3
3350 connect(3, {sa_family=AF_UNIX, path="/var/run/.nscd_socket"},
110) = 0
3350 writev(3, [{"\2\0\0\0\1\0\0\0\5\0\0\0", 12}, {"8082\0", 5}], 2) =
17
3350 read(3, "\2\0\0\0\1\0\0\0\7\0\0\0\16\0\0\0\222\37\0\0\213\23\0\0"..., 36) = 36
3350 read(3, "g20230\0YyRPmwPoa433o\0\0/usr1/g202"..., 43) = 43
3350 close(3) = 0
3350 socket(PF_UNIX, SOCK_STREAM, 0) = 3
3350 connect(3, {sa_family=AF_UNIX, path="/var/run/.nscd_socket"},
110) = 0
3350 writev(3, [{"\2\0\0\0\3\0\0\0\5\0\0\0", 12}, {"5003\0", 5}], 2) =
17
3350 read(3, "\2\0\0\0\1\0\0\0\n\0\0\0\1\0\0\0\213\23\0\0\0\0\0\0",
24) = 24
3350 readv(3, [{"", 0}, {"zin18cu01\0\0", 11}], 2) = 11
3350 read(3, NULL, 0) = 0
3350 close(3) = 0
3350 fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 16), ...}) = 0
3350 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40285000
3350 write(1, "systembug.c\n", 12) = 12
3350 munmap(0x40285000, 4096) = 0
3350 exit_group(0) = ?
3343 0x403578d4) = ? ERESTART_RESTARTBLOCK (To be restarted)
3343 --- SIGCHLD (Child exited) @ 0 (0) ---
3343 fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 16), ...}) = 0
3343 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40358000
3343 write(1, "Caught the signal \n", 19) = 19
3343 waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], WNOHANG) =
3350
3343 write(1, "Child process exited \n", 22) = 22
3343 waitpid(-1, 0x403575c0, WNOHANG) = 0
3343 sigreturn() = ? (mask now [])
3343 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
3343 rt_sigaction(SIGCHLD, NULL, {0x8048614, [CHLD], SA_RESTART}, 8) =
0
3343 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
3343 nanosleep({1, 0},
3333 0xbffff020, 0) = -1 ECHILD (No child processes)
3333 rt_sigaction(SIGINT, {SIG_IGN}, NULL, 8) = 0
3333 rt_sigaction(SIGQUIT, {SIG_IGN}, NULL, 8) = 0
3333 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
3333 write(1, "XX the retval -1 errno 10 \n", 28) = 28
3333 munmap(0x40358000, 4096) = 0
3333 exit_group(28) = ?
3343 0x403578d4) = ? ERESTART_RESTARTBLOCK (To be restarted)

Any One can you explanation why this is happening . In the below program In some cases the system command is returning with -1 even the command in the system call had succeded

To have a look i am attaching strace out put also to be clear u can search for XX in the strace output from that point u can make some thing .....

you can compile with these flags

gcc -Wall -W -O2 systembug.c -lpthread

Senario Explanation :

Actual behavior system thread 1 blocking of SIG_CHLD (system()) waitpid()thread ; ; ........thread 2 ; childexit exit_group(0) ; waitpid of system returned with child procees pid ... ; ; ; thread3 ------- signal handler { while(waitpid(NOHUNG)>0) (return with -1 and ECHILD) {

} } waitpid of system call returns success with pid of the system call's child process After this signal handler was called and waitpid in the signal handler returned with failure (This is how i need but in some cases its works like below)

system thread 1 blocking of SIG_CHLD (system()) waitpid()thread ........thread 2 childexit exit_group(0) thread3 ------- signal handler {

while(waitpid(NOHUNG)>0)

{ }

} waitpid of system call returns(with failure) because the waitpid in the signal handler was returned with pid of the system call's child process

so the system calls wait pid will return with -1 and errno ECHILD

#include #include #include #include #include #include #include

void signalHandler(int i); void *thread1(void *);

void *thread1(void *arg) {

while(1) sleep(1);

return arg; }

int main() { int ret =3D-1; int res =3D-1; pthread_t th;

res =3D pthread_create (&th, NULL, thread1, NULL); if (res) { printf ("pthread_create failed %d\n", res); }

signal(SIGCHLD,signalHandler); ret =3D system("ls systembug.c"); printf("XX the retval %d errno %d \n",ret,errno);

return 1; }

void signalHandler(int signal) { int stat =3D 0; int pid =3D 0; printf("Caught the signal \n"); while ((pid =3D waitpid(-1, &stat, WNOHANG)) > 0) { printf("Child process exited signum %d\n",signal); } }

STRACE OUTPUT

3333 execve("./a.out", ["./a.out"], [/* 61 vars */]) =3D 0 3333 uname({sys=3D"Linux", node=3D"WS29P191", ...}) =3D 0 3333 brk(0) =3D 0x804a000 3333 open("/etc/ld.so.preload", O_RDONLY) =3D -1 ENOENT (No such file or

directory)

3333 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =3D 0x40017000 3333 open("/etc/ld.so.cache", O_RDONLY) =3D 3 3333 fstat64(3, {st_mode=3DS_IFREG|0644, st_size=3D106111, ...}) =3D 0 3333 old_mmap(NULL, 106111, PROT_READ, MAP_PRIVATE, 3, 0) =3D 0x40018000

3333 close(3) =3D 0

3333 open("/lib/tls/libpthread.so.0", O_RDONLY) =3D 3 3333 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360I\0"..., 512) =3D 512

3333 fstat64(3, {st_mode=3DS_IFREG|0755, st_size=3D88272, ...}) =3D 0

3333 old_mmap(NULL, 65004, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =3D 0x40032000 3333 madvise(0x40032000, 65004, MADV_SEQUENTIAL|0x1) =3D 0 3333 old_mmap(0x4003f000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xd000) =3D 0x4003f000 3333 old_mmap(0x40040000, 7660, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) =3D 0x40040000 3333 close(3) =3D 0 3333 open("/lib/tls/libc.so.6", O_RDONLY) =3D 3 3333 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@S\1\000"..., 512) =3D 512 3333 fstat64(3, {st_mode=3DS_IFREG|0755, st_size=3D1345545, ...}) =3D 0 3333 old_mmap(NULL, 1128748, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =3D

0x40042000

3333 madvise(0x40042000, 1128748, MADV_SEQUENTIAL|0x1) =3D 0 3333 old_mmap(0x4014b000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x109000) =3D 0x4014b000 3333 old_mmap(0x40153000, 10540, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) =3D 0x40153000 3333 close(3) =3D 0 3333 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =3D 0x40156000 3333 set_thread_area({entry_number:-1 -> 6, base_addr:0x40156080, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) =3D 0 3333 munmap(0x40018000, 106111) =3D 0 3333 set_tid_address(0x401560c8) =3D 3333 3333 rt_sigaction(SIGRTMIN, {0x40036950, [], SA_SIGINFO}, NULL, 8) =3D 0

3333 rt_sigprocmask(SIG_UNBLOCK, [RTMIN], NULL, 8) =3D 0

3333 getrlimit(RLIMIT_STACK, {rlim_cur=3DRLIM_INFINITY, rlim_max=3DRLIM_INFINITY}) =3D 0 3333 _sysctl({{CTL_KERN, KERN_VERSION}, 2, 0xbfffef28, 35, (nil), 0}) =3D 0 3333 mmap2(NULL, 2101248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =3D 0x40157000 3333 brk(0) =3D 0x804a000 3333 brk(0x806b000) =3D 0x806b000 3333 brk(0) =3D 0x806b000 3333 mprotect(0x40157000, 4096, PROT_NONE) =3D 0 3333 clone(child_stack=3D0x40357b08, flags=3DCLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSV= SE=ADM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID,

parent_tidptr=3D0x40357bf8, {entry_number:6, base_addr:0x40357bb0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}, child_tidptr=3D0x40357bf8) =3D 3343

3333 rt_sigaction(SIGCHLD, {0x8048614, [CHLD], SA_RESTART}, {SIG_DFL},

8) =3D 0

3333 rt_sigaction(SIGINT, {SIG_IGN}, {SIG_IGN}, 8) =3D 0 3333 rt_sigaction(SIGQUIT, {SIG_IGN}, {SIG_IGN}, 8) =3D 0 3343 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) =3D 0 3343 rt_sigaction(SIGCHLD, NULL, {0x8048614, [CHLD], SA_RESTART}, 8) =3D

0

3343 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) =3D 0 3343 nanosleep({1, 0}, 3333 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) =3D 0 3333 clone(child_stack=3D0, flags=3DCLONE_PARENT_SETTID|SIGCHLD, parent_tidptr=3D0xbffff024) =3D 3350 3333 waitpid(3350, 3350 rt_sigaction(SIGINT, {SIG_IGN}, NULL, 8) =3D 0 3350 rt_sigaction(SIGQUIT, {SIG_IGN}, NULL, 8) =3D 0 3350 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) =3D 0 3350 execve("/bin/sh", ["sh", "-c", "ls systembug.c"], [/* 61 vars */]) =3D 0 3350 uname({sys=3D"Linux", node=3D"WS29P191", ...}) =3D 0 3350 brk(0) =3D 0x80bb000 3350 open("/etc/ld.so.preload", O_RDONLY) =3D -1 ENOENT (No such file or

directory)

3350 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =3D 0x40017000 3350 open("/etc/ld.so.cache", O_RDONLY) =3D 3 3350 fstat64(3, {st_mode=3DS_IFREG|0644, st_size=3D106111, ...}) =3D 0 3350 old_mmap(NULL, 106111, PROT_READ, MAP_PRIVATE, 3, 0) =3D 0x40018000

3350 close(3) =3D 0

3350 open("/lib/libreadline.so.4", O_RDONLY) =3D 3 3350 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200\260"..., 512) =3D 512 3350 fstat64(3, {st_mode=3DS_IFREG|0755, st_size=3D176736, ...}) =3D 0 3350 old_mmap(NULL, 178420, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =3D 0x40032000 3350 madvise(0x40032000, 178420, MADV_SEQUENTIAL|0x1) =3D 0 3350 old_mmap(0x40059000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x27000) =3D 0x40059000 3350 old_mmap(0x4005d000, 2292, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) =3D 0x4005d000 3350 close(3) =3D 0 3350 open("/lib/libhistory.so.4", O_RDONLY) =3D 3 3350 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@\30\0\000"..., 512) =3D 512 3350 fstat64(3, {st_mode=3DS_IFREG|0755, st_size=3D24828, ...}) =3D 0 3350 old_mmap(NULL, 27568, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =3D 0x4005e000 3350 madvise(0x4005e000, 27568, MADV_SEQUENTIAL|0x1) =3D 0 3350 old_mmap(0x40064000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x5000) =3D 0x40064000 3350 close(3) =3D 0 3350 open("/lib/libncurses.so.5", O_RDONLY) =3D 3 3350 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\362"..., 512) =3D 512 3350 fstat64(3, {st_mode=3DS_IFREG|0755, st_size=3D316468, ...}) =3D 0 3350 old_mmap(NULL, 280780, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =3D 0x40065000 3350 madvise(0x40065000, 280780, MADV_SEQUENTIAL|0x1) =3D 0 3350 old_mmap(0x4009e000, 45056, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x38000) =3D 0x4009e000 3350 old_mmap(0x400a9000, 2252, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) =3D 0x400a9000 3350 close(3) =3D 0 3350 open("/lib/libdl.so.2", O_RDONLY) =3D 3 3350 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\33\0\000"..., 512) =3D 512 3350 fstat64(3, {st_mode=3DS_IFREG|0755, st_size=3D13647, ...}) =3D 0 3350 old_mmap(NULL, 8628, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =3D 0x400aa000 3350 madvise(0x400aa000, 8628, MADV_SEQUENTIAL|0x1) =3D 0 3350 old_mmap(0x400ac000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x2000) =3D 0x400ac000 3350 close(3) =3D 0 3350 open("/lib/tls/libc.so.6", O_RDONLY) =3D 3 3350 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@S\1\000"..., 512) =3D 512 3350 fstat64(3, {st_mode=3DS_IFREG|0755, st_size=3D1345545, ...}) =3D 0 3350 old_mmap(NULL, 1128748, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =3D

0x400ad000

3350 madvise(0x400ad000, 1128748, MADV_SEQUENTIAL|0x1) =3D 0 3350 old_mmap(0x401b6000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x109000) =3D 0x401b6000 3350 old_mmap(0x401be000, 10540, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) =3D 0x401be000 3350 close(3) =3D 0 3350 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =3D 0x401c1000 3350 set_thread_area({entry_number:-1 -> 6, base_addr:0x401c1640, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) =3D 0 3350 munmap(0x40018000, 106111) =3D 0 3350 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) =3D 0 3350 open("/dev/tty", O_RDWR|O_NONBLOCK|O_LARGEFILE) =3D 3 3350 close(3) =3D 0 3350 brk(0) =3D 0x80bb000 3350 brk(0x80dc000) =3D 0x80dc000 3350 brk(0) =3D 0x80dc000 3350 open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) =3D -1

ENOENT (No such file or directory)

3350 open("/usr/share/locale/locale.alias", O_RDONLY) =3D 3 3350 fstat64(3, {st_mode=3DS_IFREG|0644, st_size=3D2528, ...}) =3D 0 3350 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =3D 0x40018000 3350 read(3, "# Locale name alias data base.\n#"..., 4096) =3D 2528 3350 read(3, "", 4096) =3D 0 3350 close(3) =3D 0 3350 munmap(0x40018000, 4096) =3D 0 3350 open("/usr/lib/locale/en_US.UTF-8/LC_IDENTIFICATION", O_RDONLY) =3D

-1 ENOENT (No such file or directory)

3350 open("/usr/lib/locale/en_US.utf8/LC_IDENTIFICATION", O_RDONLY) =3D 3 3350 fstat64(3, {st_mode=3DS_IFREG|0644, st_size=3D365, ...}) =3D 0 3350 mmap2(NULL, 365, PROT_READ, MAP_PRIVATE, 3, 0) =3D 0x40018000 3350 close(3) =3D 0 3350 open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) =3D 3 3350 fstat64(3, {st_mode=3DS_IFREG|0644, st_size=3D21512, ...}) =3D 0 3350 mmap2(NULL, 21512, PROT_READ, MAP_SHARED, 3, 0) =3D 0x40019000 3350 close(3) =3D

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required