From: Ian Campbell <ian.campbell@citrix.com>
To: Don Slutz <dslutz@verizon.com>
Cc: ian.jackson@eu.citrix.com, xen-devel@lists.xen.org
Subject: Re: [PATCH OSSTEST] Arrange for core dumps to be placed in /var/core and collect them
Date: Tue, 10 Mar 2015 09:38:29 +0000 [thread overview]
Message-ID: <1425980309.21353.67.camel@citrix.com> (raw)
In-Reply-To: <54FE16B0.2020908@terremark.com>
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@citrix.com>
> > ---
> > 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@lists.xen.org
> http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2015-03-10 9:38 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-09 15:40 [PATCH OSSTEST] Arrange for core dumps to be placed in /var/core and collect them Ian Campbell
2015-03-09 21:54 ` Don Slutz
2015-03-10 9:38 ` Ian Campbell [this message]
2015-03-24 12:40 ` Ian Jackson
2015-03-24 12:46 ` Ian Campbell
2015-03-24 18:35 ` Ian Jackson
2015-03-25 9:40 ` Ian Campbell
2015-03-25 14:38 ` Ian Campbell
2015-03-25 16:18 ` Ian Jackson
2015-03-25 16:30 ` Ian Campbell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1425980309.21353.67.camel@citrix.com \
--to=ian.campbell@citrix.com \
--cc=dslutz@verizon.com \
--cc=ian.jackson@eu.citrix.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.