[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH OSSTEST v2] Arrange for core dumps to be placed in /var/core and collect them
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). Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> --- v2: Add /var/core to ts-leak-check --- Osstest/TestSupport.pm | 22 ++++++++++++++++++++++ ts-host-install | 8 ++++++++ ts-leak-check | 2 +- ts-logs-capture | 2 ++ ts-xen-install | 19 ++----------------- 5 files changed, 35 insertions(+), 18 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..2e3e84b 100755 --- a/ts-host-install +++ b/ts-host-install @@ -139,6 +139,14 @@ 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-leak-check b/ts-leak-check index ec40435..fdade36 100755 --- a/ts-leak-check +++ b/ts-leak-check @@ -157,7 +157,7 @@ sub inventory () { inventory_domains(); inventory_processes(); inventory_xenstore(); - inventory_files('/tmp /var/run /var/tmp /var/lib/xen'); + inventory_files('/tmp /var/run /var/tmp /var/lib/xen /var/core'); } if (!eval { 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 b3f4387..2db0b29 100755 --- a/ts-xen-install +++ b/ts-xen-install @@ -116,26 +116,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'); -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |