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

Reply via email to