caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Florent Monnier <monnier.florent@gmail.com>
To: "caml-list" <caml-list@yquem.inria.fr>
Subject: Re: [Caml-list] exception not registered.Abandon
Date: Sat, 13 Mar 2010 20:33:33 +0100	[thread overview]
Message-ID: <201003132033.33849.monnier.florent@gmail.com> (raw)
In-Reply-To: <20100313185537.GA27381@annexia.org>

Le samedi 13 mars 2010 19:55:37, vous avez écrit :
> On Sat, Mar 13, 2010 at 07:36:16PM +0100, Florent Monnier wrote:
> > > > I have compiled a program using the native compiler, then when I run
> > > > the executable I get this error message:
> > > >
> > > > exception not registered.Abandon
> > > >
> > > > Searching Google I don't find anything about this error message.
> > > > How should I interpret it?
> > >
> > > Is the program linked to C code (apart from stdlib, I mean)?
> >
> > Yes it is.
> > It's linked with OpenGL (only the GL lib, no GLU or anything esle) and
> > SDL (through ocaml-sdl)
> >
> > It's a program that I try to switch the windowing part from Glut to SDL.
> > With Glut it works alright.
> >
> > Also I've just seen that running in the interpreted mode instead of
> > native code the program does run without any problem.
> >
> > Do these additional informations give you any clue?
> 
> As Adrian said, it's from ocaml-SDL.  It's from one of several
> functions which look like this:
> 
>  static void
>  sdlloader_raise_exception (char *msg)
>  {
>    static value *loader_exn = NULL;
>    if(! loader_exn){
>      loader_exn = caml_named_value("SDLloader_exception");
>      if(! loader_exn) {
>        fprintf(stderr, "exception not registered.");
>        abort();
>      }
>    }
>    raise_with_string(*loader_exn, msg);
>  }
> 
> Essentially you have to register OCaml exceptions before you can call
> them from C, so it sounds like you're not calling some sort of SDL
> "init" function (or calling it too late in your program).  Or possibly
> there is a bug in the ocaml-SDL bindings.

In the source of the sdlvideo.ml module there is:

exception Video_exn of string
let _ =
  Callback.register_exception "SDLvideo2_exception" (Video_exn "")

it seems for some reason that this code is not executed, because if I add at 
the beginning of my program (not in sdl source):

let () =
  (* notice the exception is prefixed with the name of the sdl module *)
  Callback.register_exception "SDLvideo2_exception" (Sdlvideo.Video_exn "");
;;

then I get the correct exception.
I don't understand what the bug is.


  parent reply	other threads:[~2010-03-13 19:29 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-13 16:42 Florent Monnier
2010-03-13 17:38 ` [Caml-list] " Richard Jones
2010-03-13 18:36   ` Florent Monnier
2010-03-13 18:50     ` Adrien
2010-03-13 18:55     ` Richard Jones
2010-03-13 18:57       ` Richard Jones
2010-03-13 19:33       ` Florent Monnier [this message]
2010-03-15  9:13         ` Olivier Andrieu

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=201003132033.33849.monnier.florent@gmail.com \
    --to=monnier.florent@gmail.com \
    --cc=caml-list@yquem.inria.fr \
    /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 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 NNTP newsgroup(s).