Re: [PATCH 6/6] Dump the debug buffer to libvirtd.log on fatal signal

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Mar 03, 2011 at 11:41:51AM +0000, Daniel P. Berrange wrote:
> On Thu, Mar 03, 2011 at 06:22:17PM +0800, Daniel Veillard wrote:
> > 
> > In case of imminent crash or upon request (signal USR2),
> > dump the logging buffer to the libvirtd.log file for
> > post-mortem analysis
> > * daemon/libvirtd.c: create a sig_fatal() handler connected to
> >   SIGFPE SIGSEGV SIGILL SIGABRT SIGBUS and SIGUSR2, just dumping
> >   the log buffer to the libvirtd.log open file descriptor
[...]
> > +    /*
> > +     * If the signal is fatal, avoid looping over this handler
> > +     * by desactivating it
> > +     */
> > +    if (sig != SIGUSR2) {
> > +        sig_action.sa_flags = SA_SIGINFO;
> > +        sig_action.sa_handler = SIG_IGN;
> > +        sigaction(sig, &sig_action, NULL);
> > +    }
> > +    errno = origerrno;
> > +}
> 
> I think this code should really be part of the logging.c file. eg create
> an API like:
> 
>    void virLogEmergencyDumpAll(int signum)
> 
> 
> And have that dump the cached log buffer to all registered log outputs.
> We'd have to excluding any syslog one which isn't async signal safe, but
> the 'stderr' or 'file' log outputs can be made async signal safe.

  yeah, I just need to double check that we just use file descriptor and
not FILE *, but it's trivial to check or convert.

> Then, the libvirtd signal handler would just be
> 
>     static void sig_fatal(int sig, siginfo_t * siginfo ATTRIBUTE_UNUSED,
>                       void* context ATTRIBUTE_UNUSED) {
>          virLogEmergencyDumpAll(sig);

 well we will still need the above bit of sigaction, but yes,

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel@xxxxxxxxxxxx  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list


[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]