unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Danny Milosavljevic <dannym@scratchpost.org>
To: Chris Marusich <cmmarusich@gmail.com>
Cc: guix-devel <guix-devel@gnu.org>
Subject: Re: wrong type of agument... where ?
Date: Sun, 7 Jan 2018 11:46:47 +0100	[thread overview]
Message-ID: <20180107114647.13498124@scratchpost.org> (raw)
In-Reply-To: <87zi5qphix.fsf@gmail.com>

Hi Chris,

On Sat, 06 Jan 2018 17:46:46 -0800
Chris Marusich <cmmarusich@gmail.com> wrote:

> Danny Milosavljevic <dannym@scratchpost.org> writes:
> 
> > Try this:
> >
> > diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm
> > index 4dd740174..810a0d63f 100644
> > --- a/gnu/build/linux-boot.scm
> > +++ b/gnu/build/linux-boot.scm
> > @@ -507,7 +507,14 @@ to it are lost."
> >               (switch-root "/root")
> >               (format #t "loading '~a'...\n" to-load)
> >  
> > -             (primitive-load to-load)
> > +             (catch #t
> > +               (lambda ()
> > +                 (primitive-load to-load))
> > +               (lambda (key . args)
> > +                 (format (current-error-port) "Error: ~a: ~a\n" key args)
> > +                 (reboot))
> > +               (lambda (key . args)
> > +                 (display-backtrace (make-stack #t) (current-error-port))))
> >  
> >               (format (current-error-port)
> >                       "boot program '~a' terminated, rebooting~%"
> >  
> 
> In some other languages (e.g., Java, Python), we get stack traces by
> default when an unhandled exception is thrown.  Is this not the case in
> Guile?

It is the case in Guile, too.  But Guile does even more - it automatically drops you into a debugger prompt.  Then the tester VM hangs waiting for keyboard input (typing a debugger command) - which we

(1) don't want to provide (we want it to fail the unit test automatically and not only after writing "please fail the unit test already" there) and
(2) can't provide through the Makefile (right now).

Also, we already catch some other exceptions in (guix ui) - and I wanted to pre-empt that. 

Also, for some reason, directly modifying (guix ui) (see "call-with-error-handling") to handle our new error doesn't work.

I tried extending (guix ui) to print a message and that message doesn't appear at runtime either for (gnu build linux-boot) - but visual source code inspection says that (gnu build linux-boot) DOES use (guix ui)'s call-with-error-handling.  No idea what's up with that.  Maybe some not-rebuilding problem.

Every testing round (in this thread, Catonano describes how to test it) takes hours on my computer so if I find a better way it will be by doing a little, from time to time, over weeks.  But a quick workaround is the above.

Furthermore, the automatic stack trace printer (which is the same as display-backtrace) does some ellipsizing (to keep the total line length under 78 characters or something) and omits valuable information in the stack trace (cuts strings etc).  I don't know what's the idea with omitting half the stuff in information meant only for *programmers* in the first place.

Therefore, I put a better stack trace printer into bug# 29922 - which is otherwise similar in approach to what I did in this thread here.

Also, I think that there's a further bug in Guix in that marionette-operating-system (which is only used for testing) doesn't even exit on guest kernel panic (it just hangs there forever).  I've also includes a fix for that in the same patch.

I think it's necessary to improve error handling - errors in error handling drive me up a wall.  If some contributor already has to battle his own error, we shouldn't prevent him from finding it by our errors :)

  reply	other threads:[~2018-01-07 10:47 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-31 11:39 wrong type of agument... where ? Catonano
2017-12-31 12:23 ` Danny Milosavljevic
2017-12-31 13:04   ` Catonano
2017-12-31 14:35     ` Danny Milosavljevic
2017-12-31 14:48       ` Catonano
2017-12-31 23:03         ` Catonano
2017-12-31 23:39         ` Danny Milosavljevic
2018-01-01 10:54           ` Catonano
2018-01-01 14:01             ` Danny Milosavljevic
2018-01-07  1:46           ` Chris Marusich
2018-01-07 10:46             ` Danny Milosavljevic [this message]
2018-01-07 23:22               ` Danny Milosavljevic
2018-01-08 18:36                 ` Danny Milosavljevic

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

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180107114647.13498124@scratchpost.org \
    --to=dannym@scratchpost.org \
    --cc=cmmarusich@gmail.com \
    --cc=guix-devel@gnu.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.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).