-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

"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
> 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)
Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org

iEYEARECAAYFAkqBN6oACgkQ27XhMxhUCo3WSwCguqfU5sNuBUK+5OdK5xHrhc9k
ol0AoIy6gQQlAvYZrCtPYnTY69/PNpfW
=/XMI
-----END PGP SIGNATURE-----

Attachment: gdb_backtrace.tar
Description: Unix tar archive

_______________________________________________
Bug-cfengine mailing list
Bug-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/bug-cfengine

Reply via email to