Good news. thanks Marco Hoehle wrote: > "most uncertain component of computer systems are humans !" > > First of all - my appoligies . Everything I said yesterday about the > segfaults is not so critical as it seems to be. > > I found out why I was not able to reproduce the segmentation faults at > work. On my testsystem (home) I had an "old" version of cf-binaries > installed into /usr/local/bin and a new one in /var/cfengine/bin. > (old: FORTIFY_SOURCE enabled, new: FORITFY_SOURCE=0). So when executing > cf-agent through the $PATH the /usr/local/bin variant was called and for > sure this one creates the segmentation faults. > > So I am sorry for this and to bring it together. > > When using : CFLAGS="-g -O2 -D_FORTIFY_SOURCE=0" no segmentation > faults will happen !. > > But I took the time and created a gdb backtrace of the faulty cf-agent > version. If you want you can have a look into it, or throw it in the > trashbin - it's up to you. > > > Sorry again. > > Best regards > marco > > > > > Mark Burgess wrote: >> You could also try running through Valgrind >> M > >> Marco Hoehle wrote: >>> Hello, >>> >>> >>> running on CentOS 5.3 / RHEL5.3 32 and 64bit , cf3 trunk build 434. >>> When compiling cf3 without special options the cf-agent binary is >>> throwing a segfault after every run. >>> When disabling FORTIFY_SOURCE with CFLAGS="-g -O2 -D_FORTIFY_SOURCE=0" >>> the binary is running somewhat stable ... but on configuration errors it >>> still reacts sometimes with segmentation faults. The bad side is that >>> cf-agent intends to go into failsafe mode but never does because of the >>> segfault. >>> Below you can find some examples. >>> >>> -- this seems to be reproducable ------------------------- >>> >>> looks like when cf-agent is called with the -f option and through the >>> path variable (not direct path) it is segfaulting ... >>> Same happens when instead of the -f option an broken promise is >>> configured. The agent will segfault. >>> >>>> this is fine >>> [r...@mir inputs]# /var/cfengine/bin/cf-agent -K -f testing/hello_world.cf >>> R: Hello World >>> >>>> this is bad >>> r...@mir inputs]# cf-agent -K -f testing/hello_world.cf >>> R: Hello World >>> *** buffer overflow detected ***: cf-agent terminated >>> ======= Backtrace: ========= >>> /lib/i686/nosegneg/libc.so.6(__chk_fail+0x41)[0x907f61] >>> /lib/i686/nosegneg/libc.so.6(__strcpy_chk+0x43)[0x907383] >>> cf-agent[0x809f95e] >>> cf-agent[0x809fefa] >>> >>> another example. >>> ----- wrong defined body should not finish in a segfault of cf-agent >>> -------------------- >>> >>> [r...@mir inputs]# cf-agent -K >>> cf3:/var/cfengine/inputs/sys/main.cf:3,1: Redefinition of body control >>> for common is a broken promise, near token '{' >>> cf3:/var/cfengine/inputs/sys/main.cf:12,20: Redefinition of input list >>> (broken promise), near token '}' >>> Summarizing promises as text to /var/cfengine/inputs/promises.cf.txt >>> Summarizing promises as html to /var/cfengine/inputs/promises.cf.html >>> cf-agent was not able to get confirmation of promises from cf-promises, >>> so going to failsafe >>> *** buffer overflow detected ***: cf-agent terminated >>> ======= Backtrace: ========= >>> /lib/i686/nosegneg/libc.so.6(__chk_fail+0x41)[0x907f61] >>> /lib/i686/nosegneg/libc.so.6(__strcpy_chk+0x43)[0x907383] >>> cf-agent[0x809f95e] >>> cf-agent[0x809fefa] >>> cf-agent[0x804cba4] >>> /lib/i686/nosegneg/libc.so.6(__libc_start_main+0xdc)[0x835e8c] >>> cf-agent[0x804ad51] >>> >>> well it never goes into failsafe because of the segfault and my clients >>> will become unmanaged through this. >>> >>> -------------------------------------------------- >>> >>> >>> and yet another example. I was trying to fill an slist with >>> execresult("/bin/ls /mydir/*.cf","noshell") and divine what. The >>> cf-agent process dies with a segmentation fault .... but this one is >>> different than the others ;) >>> >>> when using execresult to get a dynamic configfile list all processes do >>> segfaults >>> cf3 > Parsing file /var/cfengine/inputs/sys/update.cf >>> cf3 > Parsing file /var/cfengine/inputs/sys/library.cf >>> cf3 > Parsing file /var/cfengine/inputs/sys/server.cf >>> cf3 > Parsing file /var/cfengine/inputs/sys/cfengine_maintenance.cf >>> Segmentation fault >>> >>> ------ details --- >>> GetVariable(global,files_unixnews): using scope 'global' for variable >>> 'files_unixnews' >>> return final variable type=slist, value={ >>> /bin/ls: /var/cfengine/unixnews.ch/*.cf: No such file or directory} >>> ExpandPrivateRval(scope=sys,type=/) >>> Cannot append X to rval-list [(null)] >>> Segmentation fault >>> ------------------------- >>> >>> >>> ------- slist for dynmic variables finishes with segfault >>> --------------------- >>> GetVariable(global,files_unixnews): using scope 'global' for variable >>> 'files_unixnews' >>> return final variable type=slist, value={ >>> hostname_test.cf main.cf} >>> ExpandPrivateRval(scope=sys,type=n) >>> Cannot append X to rval-list [(null)] >>> Segmentation fault >>> >>> >>> >>> Thanks in advance for reviewing. >>> Kind regards >>> marco >>> >>> >>> >>> >>> >>> >>> >>> >> _______________________________________________ >> Bug-cfengine mailing list >> Bug-cfengine@cfengine.org >> https://cfengine.org/mailman/listinfo/bug-cfengine >
------------------------------------------------------------------------ _______________________________________________ Bug-cfengine mailing list Bug-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/bug-cfengine -- Mark Burgess ------------------------------------------------- Professor of Network and System Administration Oslo University College, Norway Personal Web: http://www.iu.hio.no/~mark Office Telf : +47 22453272 ------------------------------------------------- _______________________________________________ Bug-cfengine mailing list Bug-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/bug-cfengine