And lastly (for the moment, here is a completely self-contained test case:
bundle agent nfs_test { vars: "sge_top" string => '/opt/gridengine'; "sge_ver" string => '6.2u5'; "sge_nfs_opts" string => 'rw,bg,intr,tcp,rsize=32768,wsize=32768'; storage: # # SEGFAULTS!!!!! in 3.0.3 community binaries any:: "${sge_top}" mount => nfs_p(${qmaster_host},${sge_top},${sge_nfs_opts}); } # cf-agent -KvI -b nfs_test <..snip..> cf3 >> Using command line specified bundlesequence cf3 -> Bundlesequence => {'nfs_test'} cf3 cf3 ***************************************************************** cf3 BUNDLE nfs_test cf3 ***************************************************************** cf3 cf3 cf3 ========================================================= cf3 vars in bundle nfs_test (1) cf3 ========================================================= cf3 cf3 Verifying SQL table promises is only available with Cfengine Nova or above cf3 cf3 + Private classes augmented: cf3 cf3 - Private classes diminished: cf3 cf3 cf3 cf3 ========================================================= cf3 storage in bundle nfs_test (1) cf3 ========================================================= cf3 cf3 Verifying SQL table promises is only available with Cfengine Nova or above cf3 cf3 ......................................................... cf3 Promise handle: cf3 Promise made by: /opt/gridengine cf3 ......................................................... cf3 cf3 -> Using literal pathtype for /opt/gridengine Detaching after fork from child process 12111. cf3 -> Verifying mounted file systems on /opt/gridengine cf3 !! File system /opt/gridengine seems not to be mounted correctly cf3 Verifying /opt/gridengine in /etc/fstab cf3 Adding file system ${qmaster_host}:/opt/gridengine seems to /etc/fstab. cf3 -> Number of changes observed in /etc/fstab is 1 cf3 Edited file /etc/fstab Program received signal SIGSEGV, Segmentation fault. 0x000000000041f0a5 in CheckForFileHoles () (gdb) bt #0 0x000000000041f0a5 in CheckForFileHoles () #1 0x000000000041eeb1 in ArchiveToRepository () #2 0x0000000000422833 in SaveItemListAsFile () #3 0x00000000004045f3 in DeleteTypeContext () #4 0x0000000000404cd3 in ScheduleAgentOperations () #5 0x0000000000404e73 in KeepPromiseBundles () #6 0x0000000000405983 in KeepPromises () #7 0x0000000000405e9d in main () On Mon, Feb 22, 2010 at 11:32:56AM -0500, Jesse Becker wrote: >On Mon, Feb 22, 2010 at 11:21:00AM -0500, Jesse Becker wrote: >>On Mon, Feb 22, 2010 at 05:30:34AM -0500, Mark Burgess wrote: >>> >>>Jesse, >>> >>>I started a bug track on this on our system, but I am unable to reproduce >>>the error. It >>>works perfectly for me. Can you provide a gdb backtrace please and simple >>>reproducible >>>example that does not depend on your environment. >> >>(This is all updated in the bug tracker as well) >> >>There may be a connection between the segfault and if the mount >>point actually exists or not (i.e. there's a typo somewhere). >>For example, the actual export is 'server:/opt/gridengine', but if I >>use "server:/opt/grid-typo-oops", there will be a segfault. It works >>correctly if there isn't a typo. So obviously, I need to check my >>variables, but cf-agent shouldn't segfault on bad data either. >> >>Given this configuration: >> >>bundle agent sge { >> >>vars: >> "sge_top" string => '/opt/gridengine'; >> "qmaster_host" string => 'sge-master-host'; >> "sge_nfs_opts" string => 'rw,bg,intr,tcp,rsize=32768,wsize=32768'; >> >>storage: >> SGE.!SGEMasters:: >> "${sge_top}-foo" # NOTE!!!!!!! Different from what is used! >> mount => nfs_p(${qmaster_host},${sge_top},${sge_nfs_opts}); >> >>} >> >> >>This causes a segfault: >> >>cf3 ========================================================= >>cf3 storage in bundle sge (1) >>cf3 ========================================================= >>cf3 >>cf3 Verifying SQL table promises is only available with Cfengine Nova or >>above >>cf3 >>cf3 ......................................................... >>cf3 Promise handle: >>cf3 Promise made by: /opt/gridengine-FOOOOOO >>cf3 ......................................................... >>cf3 >>cf3 -> Using literal pathtype for /opt/gridengine-FOOOOOO >>Detaching after fork from child process 9135. >>cf3 -> Verifying mounted file systems on /opt/gridengine-FOOOOOO >>cf3 !! File system /opt/gridengine-FOOOOOO seems not to be mounted >>correctly >>cf3 Verifying /opt/gridengine-FOOOOOO in /etc/fstab >>cf3 Adding file system kirk:/opt/gridengine seems to /etc/fstab. >>cf3 -> Number of changes observed in /etc/fstab is 1 >>cf3 Edited file /etc/fstab >> >>Program received signal SIGSEGV, Segmentation fault. >>0x000000000041f0a5 in CheckForFileHoles () >>(gdb) bt >>#0 0x000000000041f0a5 in CheckForFileHoles () >>#1 0x000000000041eeb1 in ArchiveToRepository () >>#2 0x0000000000422833 in SaveItemListAsFile () >>#3 0x00000000004045f3 in DeleteTypeContext () >>#4 0x0000000000404cd3 in ScheduleAgentOperations () >>#5 0x0000000000404e73 in KeepPromiseBundles () >>#6 0x0000000000405983 in KeepPromises () >>#7 0x0000000000405e9d in main () >> > >One more bit of information, when running under '-d0'. There may be >some bad characters in the filename (note the "~K~W~H" control >characters): > > >... >Unappending Edited file /etc/fstab >Repository(/etc/fstab.cf-before-edit) >cf3 Will not create directories for a relative filename >(H~K~W~H_etc_fstab.cf-before-edit). Has no invariant meaning >Unappending Will not create directories for a relative filename >(H~K~W~H/_etc_fstab.cf-before-edit). Has no invariant meaning >Program received signal SIGSEGV, Segmentation fault. >0x000000000041f0a5 in CheckForFileHoles () >(gdb) bt >#0 0x000000000041f0a5 in CheckForFileHoles () >#1 0x000000000041eeb1 in ArchiveToRepository () >#2 0x0000000000422833 in SaveItemListAsFile () >#3 0x00000000004045f3 in DeleteTypeContext () >#4 0x0000000000404cd3 in ScheduleAgentOperations () >#5 0x0000000000404e73 in KeepPromiseBundles () >#6 0x0000000000405983 in KeepPromises () >#7 0x0000000000405e9d in main () > > >Longer debug output is in the bug tracker. > > > > >> >> >>Also, I noticed that if /etc/fstab does not exist at all, a storage: >>promise will not create it even if 'edit_fstab => "true";'. I don't >>know if that is expected behavior or not. >> >> >>> >>>Jesse Becker wrote: >>>> I'm getting a segfault from a storage action when using the 3.0.3 >>>> communitiy binaries. >>>> >>>> I'm trying to mount an NFS share using this: >>>> >>>> >>>> storage: >>>> >>>> SGE.!SGEMasters:: >>>> "/opt/gridengine" >>>> mount => >>>> nfs_p(${qmaster_host},${sge_top},'rw,bg,intr,tcp,rsize=32768,wsize=32768'); >>>> >>>> >>>> >>>> cf-agent blows up, but not before *removing* /etc/fstab completely. >>>> This is usually a Bad Thing. However, it does create two new files: >>>> >>>> /etc/fstab.cf-before-edit >>>> /etc/fstab.cf-after-edit >>>> >>>> These files both have the correct contents for their respective names. >>>> >>> >>>-- >>>Mark Burgess >>> >>>------------------------------------------------- >>>Professor of Network and System Administration >>>Oslo University College, Norway >>> >>>Personal Web: http://www.iu.hio.no/~mark >>>Office Telf : +47 22453272 >>>------------------------------------------------- >> >>-- >>Jesse Becker >>NHGRI Linux support (Digicon Contractor) > >-- >Jesse Becker >NHGRI Linux support (Digicon Contractor) -- Jesse Becker NHGRI Linux support (Digicon Contractor) _______________________________________________ Help-cfengine mailing list Help-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/help-cfengine