| PLEX86 | ||
|
In some cases the system command is returning with 1 even it succededAny 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 SIGCHLD (system()) waitpid()thread ; ; ........thread 2 ; childexit exitgroup(0) ; waitpid of system returned with child procees pid ... ; ; ; thread3 ------- signal handler { (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 SIGCHLD (system()) waitpid()thread ........thread 2 childexit exitgroup(0) thread3 ------- signal handler { { } } 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
void signalHandler(int i); void *thread1(void *); void *thread1(void *arg) { while(1) sleep(1); return arg; } int main() { int ret =-1; int res =-1; pthreadt th; res = pthreadcreate (&th, NULL, thread1, NULL); if (res) { printf ("pthreadcreate failed %d-n", res); } signal(SIGCHLD,signalHandler); ret = system("ls systembug.c"); printf("XX the retval %d errno %dn",ret,errno); Desperate with SUSE 10.0 install on Amilo Pi Notebook Hi, after lengthy consideration and some lowering of my demands, I have finally purchased a Fujitsu-Siemens Amilo Pi 1536 notebook, because the opensuse hardware list suggested that other Amilos work quite well with... return 1; } void signalHandler(int signal) { int stat = 0; int pid = 0; printf("Caught the signaln"); { printf("Child process exited signum %d-n",signal); } } 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", ORDONLY) = -1 ENOENT (No such file or directory) 3333 oldmmap(NULL, 4096, PROTREADPROTWRITE, MAPPRIVATEMAPANONYMOUS, -1, 0) = 0x40017000 3333 open("-etc-ld.so.cache", ORDONLY) = 3 3333 fstat64(3, {stmode=SIFREG0644, stsize=106111, ...}) = 0 3333 oldmmap(NULL, 106111, PROTREAD, MAPPRIVATE, 3, 0) = 0x40018000 3333 close(3) = 0 3333 open("-lib-tls-libpthread.so.0", ORDONLY) = 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, {stmode=SIFREG0755, stsize=88272, ...}) = 0 3333 oldmmap(NULL, 65004, PROTREADPROTEXEC, MAPPRIVATE, 3, 0) = 0x40032000 3333 madvise(0x40032000, 65004, MADVSEQUENTIAL0x1) = 0 3333 oldmmap(0x4003f000, 4096, PROTREADPROTWRITE, MAPPRIVATEMAPFIXED, 3, 0xd000) = 0x4003f000 3333 oldmmap(0x40040000, 7660, PROTREADPROTWRITE, MAPPRIVATEMAPFIXEDMAPANONYMOUS, -1, 0) = 0x40040000 3333 close(3) = 0 3333 open("-lib-tls-libc.so.6", ORDONLY) = 3 3333 read(3, 512 3333 fstat64(3, {stmode=SIFREG0755, stsize=1345545, ...}) = 0 3333 oldmmap(NULL, 1128748, PROTREADPROTEXEC, MAPPRIVATE, 3, 0) = 0x40042000 3333 madvise(0x40042000, 1128748, MADVSEQUENTIAL0x1) = 0 3333 oldmmap(0x4014b000, 32768, PROTREADPROTWRITE, MAPPRIVATEMAPFIXED, 3, 0x109000) = 0x4014b000 3333 oldmmap(0x40153000, 10540, PROTREADPROTWRITE, MAPPRIVATEMAPFIXEDMAPANONYMOUS, -1, 0) = 0x40153000 3333 close(3) = 0 3333 oldmmap(NULL, 4096, PROTREADPROTWRITE, MAPPRIVATEMAPANONYMOUS, -1, 0) = 0x40156000 limit:1048575, seg32bit:1, contents:0, readexeconly:0, limitinpages:1, segnotpresent:0, useable:1}) = 0 3333 munmap(0x40018000, 106111) = 0 3333 settidaddress(0x401560c8) = 3333 3333 rtsigaction(SIGRTMIN, {0x400368 plus 150, , SASIGINFO}, NULL, 8) = 0 3333 rtsigprocmask(SIGUNBLOCK, RTMIN, NULL, 8) = 0 3333 getrlimit(RLIMITSTACK, {rlimcur=RLIMINFINITY, rlimmax=RLIMINFINITY}) = 0 3333 sysctl({{CTLKERN, KERNVERSION}, 2, 0xbfffef28, 35, (nil), 0}) = 0 3333 mmap2(NULL, 2101248, PROTREADPROTWRITE, MAPPRIVATEMAPANONYMOUS, -1, 0) = 0x40157000 3333 brk(0) = 0x804a000 3333 brk(0x806b000) = 0x806b000 3333 brk(0) = 0x806b000 3333 mprotect(0x40157000, 4096, PROTNONE) = 0 3333 clone(childstack=0x40357b08, flags=CLONEVMCLONEFSCLONEFILESCLONESIGHANDCLONETHREADCLONESYSVSEÐMCLONESETTLSCLONEPARENTSETTIDCLONECHILDCLEARTID, How to fend off ng spam effectively... 940 Michael Heiming nwrddc01.gnilink.net!cyclone2.gnilink.net!cyclone1.gnilink.net!gnilink.net! nx02.iad01.newshosting.com!newshosting.com!novia!news2.volia.net! news.tsystems.kiev.ua!news.gu.net!not-for-mail... parenttidptr=0x40357bf8, {entrynumber:6, baseaddr:0x40357bb0, limit:1048575, seg32bit:1, contents:0, readexeconly:0, limitinpages:1, segnotpresent:0, useable:1}, childtidptr=0x40357bf8) = 3343 3333 rtsigaction(SIGCHLD, {0x8048614, CHLD, SARESTART}, {SIGDFL}, 8) = 0 3333 rtsigaction(SIGINT, {SIGIGN}, {SIGIGN}, 8) = 0 3333 rtsigaction(SIGQUIT, {SIGIGN}, {SIGIGN}, 8) = 0 3343 rtsigprocmask(SIGBLOCK, CHLD, , 8) = 0 3343 rtsigaction(SIGCHLD, NULL, {0x8048614, CHLD, SARESTART}, 8) = 0 3343 rtsigprocmask(SIGSETMASK, , NULL, 8) = 0 3333 rtsigprocmask(SIGBLOCK, CHLD, , 8) = 0 3333 clone(childstack=0, flags=CLONEPARENTSETTIDSIGCHLD, parenttidptr=0xbffff024) = 3350 3350 rtsigaction(SIGINT, {SIGIGN}, NULL, 8) = 0 3350 rtsigaction(SIGQUIT, {SIGIGN}, NULL, 8) = 0 3350 rtsigprocmask(SIGSETMASK, , 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", ORDONLY) = -1 ENOENT (No such file or directory) 3350 oldmmap(NULL, 4096, PROTREADPROTWRITE, MAPPRIVATEMAPANONYMOUS, -1, 0) = 0x40017000 3350 open("-etc-ld.so.cache", ORDONLY) = 3 3350 fstat64(3, {stmode=SIFREG0644, stsize=106111, ...}) = 0 3350 oldmmap(NULL, 106111, PROTREAD, MAPPRIVATE, 3, 0) = 0x40018000 3350 close(3) = 0 3350 open("-lib-libreadline.so.4", ORDONLY) = 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, {stmode=SIFREG0755, stsize=176736, ...}) = 0 3350 oldmmap(NULL, 178420, PROTREADPROTEXEC, MAPPRIVATE, 3, 0) = 0x40032000 3350 madvise(0x40032000, 178420, MADVSEQUENTIAL0x1) = 0 3350 oldmmap(0x40059000, 16384, PROTREADPROTWRITE, MAPPRIVATEMAPFIXED, 3, 0x27000) = 0x40059000 3350 oldmmap(0x4005d000, 2292, PROTREADPROTWRITE, MAPPRIVATEMAPFIXEDMAPANONYMOUS, -1, 0) = 0x4005d000 3350 close(3) = 0 3350 open("-lib-libhistory.so.4", ORDONLY) = 3 3350 read(3, 512 3350 fstat64(3, {stmode=SIFREG0755, stsize=24828, ...}) = 0 3350 oldmmap(NULL, 27568, PROTREADPROTEXEC, MAPPRIVATE, 3, 0) = 0x4005e000 3350 madvise(0x4005e000, 27568, MADVSEQUENTIAL0x1) = 0 3350 oldmmap(0x40064000, 4096, PROTREADPROTWRITE, MAPPRIVATEMAPFIXED, 3, 0x5000) = 0x40064000 3350 close(3) = 0 3350 open("-lib-libncurses.so.5", ORDONLY) = 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, {stmode=SIFREG0755, stsize=316468, ...}) = 0 3350 oldmmap(NULL, 280780, PROTREADPROTEXEC, MAPPRIVATE, 3, 0) = 0x40065000 3350 madvise(0x40065000, 280780, MADVSEQUENTIAL0x1) = 0 3350 oldmmap(0x4009e000, 45056, PROTREADPROTWRITE, MAPPRIVATEMAPFIXED, 3, 0x38000) = 0x4009e000 3350 oldmmap(0x400a9000, 2252, PROTREADPROTWRITE, MAPPRIVATEMAPFIXEDMAPANONYMOUS, -1, 0) = 0x400a9000 3350 close(3) = 0 3350 open("-lib-libdl.so.2", ORDONLY) = 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, {stmode=SIFREG0755, stsize=13647, ...}) = 0 3350 oldmmap(NULL, 8628, PROTREADPROTEXEC, MAPPRIVATE, 3, 0) = 0x400aa000 3350 madvise(0x400aa000, 8628, MADVSEQUENTIAL0x1) = 0 3350 oldmmap(0x400ac000, 4096, PROTREADPROTWRITE, MAPPRIVATEMAPFIXED, 3, 0x2000) = 0x400ac000 3350 close(3) = 0 3350 open("-lib-tls-libc.so.6", ORDONLY) = 3 3350 read(3, 512 3350 fstat64(3, {stmode=SIFREG0755, stsize=1345545, ...}) = 0 3350 oldmmap(NULL, 1128748, PROTREADPROTEXEC, MAPPRIVATE, 3, 0) = 0x400ad000 3350 madvise(0x400ad000, 1128748, MADVSEQUENTIAL0x1) = 0 3350 oldmmap(0x401b6000, 32768, PROTREADPROTWRITE, MAPPRIVATEMAPFIXED, 3, 0x109000) = 0x401b6000 3350 oldmmap(0x401be000, 10540, PROTREADPROTWRITE, MAPPRIVATEMAPFIXEDMAPANONYMOUS, -1, 0) = 0x401be000 3350 close(3) = 0 3350 oldmmap(NULL, 4096, PROTREADPROTWRITE, MAPPRIVATEMAPANONYMOUS, -1, 0) = 0x401c1000 limit:1048575, seg32bit:1, contents:0, readexeconly:0, limitinpages:1, segnotpresent:0, useable:1}) = 0 3350 munmap(0x40018000, 106111) = 0 3350 rtsigprocmask(SIGBLOCK, NULL, , 8) = 0 3350 open("-dev-tty", ORDWRONONBLOCKOLARGEFILE) = 3 3350 close(3) = 0 3350 brk(0) = 0x80bb000 3350 brk(0x80dc000) = 0x80dc000 3350 brk(0) = 0x80dc000 3350 open("-usr-lib-locale-locale-archive", ORDONLYOLARGEFILE) = -1 ENOENT (No such file or directory) 3350 open("-usr-share-locale-locale.alias", ORDONLY) = 3 3350 fstat64(3, {stmode=SIFREG0644, stsize=2528, ...}) = 0 3350 mmap2(NULL, 4096, PROTREADPROTWRITE, MAPPRIVATEMAPANONYMOUS, -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-enUS.UTF-8-LCIDENTIFICATION", ORDONLY) = -1 ENOENT (No such file or directory) 3350 open("-usr-lib-locale-enUS.utf8-LCIDENTIFICATION", ORDONLY) = 3 3350 fstat64(3, {stmode=SIFREG0644, stsize=365, ...}) = 0 3350 mmap2(NULL, 365, PROTREAD, MAPPRIVATE, 3, 0) = 0x40018000 3350 close(3) = 0 3350 open("-usr-lib-gconv-gconv-modules.cache", ORDONLY) = 3 3350 fstat64(3, {stmode=SIFREG0644, stsize=21512, ...}) = 0 3350 mmap2(NULL, 21512, PROTREAD, MAPSHARED, 3, 0) = 0x40019000 3350 close(3) =
|
||||
How to fend off ng spam effectively... 940 Linux groups from Newsgroups The #1 Usenet Provider on the Internet
|
||||