[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH OSSTEST] Arrange for core dumps to be placed in /var/core and collect them
On Mon, 2015-03-09 at 17:54 -0400, Don Slutz wrote: > > On 03/09/15 11:40, Ian Campbell wrote: > > Refactor the $kvp_replace helper in ts-xen-install into a generic > > helper (which requires using ::EO and ::EI for namespacing) for use > > with target_editfile and use it to edit /etc/sysctl.conf to set > > kernel.core_pattern on boot. > > > > Tested in standalone mode by installing and running a C program > > containing "*(int *)0 = 1;" which, after running "ulimit -c unlimited" > > produces the expected core file. ts-logs-capture when run in > > standalone mode then picks them up. > > > > I've not yet figured out how to make the desired rlimit take affect > > for all processes (including e.g. daemons spawned on boot). Likely > > this will involve some combination of pam_limits.so PAM module and > > adding explicit ulimit calls to the initscripts which we care about > > (primarily xencommons and libvirt initscripts). > > I am not sure about debian, but for fedora the places are: Thanks, these look broadly similar to Debian. > /etc/security/limits.conf: > * soft core unlimited FYI "*" explicitly excludes root, at least on Debian, so a separate line would be needed for root logins. > /etc/profile: > ulimit -S -c unlimited > /dev/null 2>&1 > > /etc/sysctl.conf > fs.suid_dumpable = 1 Not 100% sure if we would need this in the context of osstest. > /etc/sysconfig/init: > DAEMON_COREFILE_LIMIT='unlimited' > > Note: The last depends on: > /etc/init.d/functions: > ulimit -S -c ${DAEMON_COREFILE_LIMIT:-0} >/dev/null 2>&1 I think this one is a Red Hat ism. > Hope this helps. It did, thanks. > -Don Slutz > > > > > I did debate making the presence of cores in /var/core fail the test > > (somehow), but I decided that would be annoying for standalone mode or > > shared host scenarios where the core files might be stale or related > > to another job. > > > > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> > > --- > > Osstest/TestSupport.pm | 22 ++++++++++++++++++++++ > > ts-host-install | 9 +++++++++ > > ts-logs-capture | 2 ++ > > ts-xen-install | 19 ++----------------- > > 4 files changed, 35 insertions(+), 17 deletions(-) > > > > diff --git a/Osstest/TestSupport.pm b/Osstest/TestSupport.pm > > index 8754e22..ece2282 100644 > > --- a/Osstest/TestSupport.pm > > +++ b/Osstest/TestSupport.pm > > @@ -57,6 +57,7 @@ BEGIN { > > target_put_guest_image target_editfile > > target_editfile_cancel > > target_editfile_root target_file_exists > > + target_editfile_kvp_replace > > target_run_apt > > target_install_packages target_install_packages_norec > > target_jobdir target_extract_jobdistpath_subdir > > @@ -542,6 +543,27 @@ sub teditfileex { > > if $install; > > } > > > > +# Replace a Key=Value style line in a config file. > > +# > > +# To be used as 3rd argument to target_editfile(_root) as: > > +# target_editfile_root($ho, "/path/to/a/file", > > +# sub { target_editfile_kvp_replace($key, $value) }); > > +sub target_editfile_kvp_replace ($$) > > +{ > > + my ($key,$value) = @_; > > + my $prnow; > > + $prnow= sub { > > + print ::EO "$key=$value\n" or die $!; > > + $prnow= sub { }; > > + }; > > + while (<::EI>) { > > + print ::EO or die $! unless m/^$key\b/; > > + $prnow->() if m/^#$key/; > > + } > > + print ::EO "\n" or die $!; > > + $prnow->(); > > +}; > > + > > sub target_editfile_root ($$$;$$) { teditfileex('root',@_); } > > sub target_editfile ($$$;$$) { teditfileex('osstest',@_); } > > # my $code= pop @_; > > diff --git a/ts-host-install b/ts-host-install > > index 9656079..b60abae 100755 > > --- a/ts-host-install > > +++ b/ts-host-install > > @@ -139,6 +139,15 @@ END > > }); > > } > > > > + target_cmd_root($ho, 'mkdir -p /var/core'); > > + > > + target_editfile_root($ho, '/etc/sysctl.conf', > > + sub { target_editfile_kvp_replace( > > + "kernel.core_pattern", > > + # %p==pid,%e==executable name,%t==timestamp > > + "/var/core/%t.%p.%e.core") }); > > + target_cmd_root($ho, "sysctl --load /etc/sysctl.conf"); > > + > > target_cmd_root($ho, "update-rc.d osstest-confirm-booted start 99 2 > > ."); > > > > logm('OK: install completed'); > > diff --git a/ts-logs-capture b/ts-logs-capture > > index 453b03d..45b0a38 100755 > > --- a/ts-logs-capture > > +++ b/ts-logs-capture > > @@ -136,6 +136,8 @@ sub fetch_logs_host_guests () { > > > > /home/osstest/osstest-confirm-booted.log > > > > + /var/core/*.core > > + > > )]; > > if (!try_fetch_logs($ho, $logs)) { > > logm("log fetching failed, trying hard host reboot..."); > > diff --git a/ts-xen-install b/ts-xen-install > > index 5282f0a..da64a90 100755 > > --- a/ts-xen-install > > +++ b/ts-xen-install > > @@ -114,26 +114,11 @@ sub adjustconfig () { > > } > > die unless defined $trace_config_file; > > > > - my $kvp_replace = sub($$) { > > - my ($key,$value) = @_; > > - my $prnow; > > - $prnow= sub { > > - print EO "$key=$value\n" or die $!; > > - $prnow= sub { }; > > - }; > > - while (<EI>) { > > - print EO or die $! unless m/^$key\b/; > > - $prnow->() if m/^#$key/; > > - } > > - print EO "\n" or die $!; > > - $prnow->(); > > - }; > > - > > target_editfile_root($ho, $trace_config_file, > > - sub { $kvp_replace->("XENCONSOLED_TRACE", "guest") }); > > + sub { target_editfile_kvp_replace("XENCONSOLED_TRACE", "guest") }); > > > > target_editfile_root($ho, '/etc/libvirt/libvirtd.conf', > > - sub { $kvp_replace->("log_level", "1") }) > > + sub { target_editfile_kvp_replace("log_level", "1") }) > > if toolstack($ho)->{Name} eq "libvirt"; > > > > target_cmd_root($ho, 'mkdir -p /var/log/xen/console'); > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > http://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |