From: Martin Jambon <martin.jambon@ens-lyon.org>
To: Ashish Agarwal <agarwal1975@gmail.com>
Cc: Caml List <caml-list@inria.fr>
Subject: Re: [Caml-list] segfault in simple program with 4.02 native
Date: Fri, 05 Sep 2014 16:59:40 -0700 [thread overview]
Message-ID: <540A4E6C.3020301@ens-lyon.org> (raw)
In-Reply-To: <CAMu2m2JaASyBUgX3x4=a_LByuYcwzEB72EnNcEDE=oZNG=2++w@mail.gmail.com>
On Fri 05 Sep 2014 04:39:54 PM PDT, Ashish Agarwal wrote:
> > First try a 'make test' from atdgen's source
> ...
> The following tests failed:
> ocaml internals
> biniou correctness
> json correctness
> *** FAILURE ***
The "ocaml internals" test fails on this:
type internals1 = { int1 : bool }
...
let f () = { int1 = Obj.magic false } in
assert (f () != f ());
So don't use atdgen 1.3.1 or below with ocaml 4.02.0 or above.
No promise as when this will be fixed. Follow the activity on github if
you're interested in following or contributing.
> Thanks to everyone for all the replies. My type defs are small, so at
> least I can easily bypass the issue by using Yojson directly.
>
>
>
>
> On Fri, Sep 5, 2014 at 6:39 PM, Martin Jambon
> <martin.jambon@ens-lyon.org <mailto:martin.jambon@ens-lyon.org>> wrote:
>
> On 09/05/2014 03:18 PM, Richard W.M. Jones wrote:
>
> On Fri, Sep 05, 2014 at 11:13:02PM +0100, Richard W.M. Jones
> wrote:
>
> On Fri, Sep 05, 2014 at 06:06:55PM -0400, Ashish Agarwal
> wrote:
>
> I increased the stack size to 65532, which is
> apparently the max allowed on
> a Mac, and it doesn't change the behavior.
>
>
> Yup. I was able to reproduce this on the non-core
> version, and indeed
> increasing the stack to unlimited on Linux does not help.
>
> The stack trace is simple:
>
> #0 0x00000000004543f4 in
> camlPervasives__output_string___1198 ()
> #1 0x0000000000472093 in
> camlCamlinternalFormat____output_acc_60624 ()
> #2 0x0000000000473a32 in camlPrintf__fun_1062 ()
> #3 0x000000000041e776 in camlApp__entry ()
> #4 0x000000000041c5f9 in caml_program ()
> #5 0x0000000000497f7e in caml_start_program ()
> #6 0x000000000049813d in __libc_csu_init ()
> #7 0x00007ffff7317d65 in __libc_start_main () from
> /lib64/libc.so.6
> #8 0x000000000041c2e9 in _start ()
>
> I'm just installing debuginfo so I can get more symbols ..
>
>
> .. although I guess the fact that the generated code in
> config_j.ml <http://config_j.ml> is
> doing a lot of Obj.magic would be the first place to be
> suspicious.
>
> eg:
>
> let (x : postgres) =
> {
> host = Obj.magic 0.0;
> ...
>
> where the host field has declared type string. Really?
>
>
> That code is generated by atdgen. What happens is that we have to
> either create an empty record when starting to parse a list of
> unordered JSON fields, or use a bunch `let <field name> = ref None
> in` for each field and create the record in the end. While the
> latter approach is not much more work to implement, the resulting
> code was found to be significantly slower.
>
> The reason why it's using `Obj.magic 0.0` is that it worked in all
> cases (and has been for the past 4 years). Obtaining a well-formed
> constant value for any type is not trivial, so this what we have.
>
> It's very possible that it's now broken with OCaml 4.02. First try
> a 'make test' from atdgen's source directory
> (https://github.com/mjambon/__atdgen
> <https://github.com/mjambon/atdgen>) and see if it passes.
>
>
> Martin
>
>
>
> --
> Caml-list mailing list. Subscription management and archives:
> https://sympa.inria.fr/sympa/__arc/caml-list
> <https://sympa.inria.fr/sympa/arc/caml-list>
> Beginner's list: http://groups.yahoo.com/group/__ocaml_beginners
> <http://groups.yahoo.com/group/ocaml_beginners>
> Bug reports: http://caml.inria.fr/bin/caml-__bugs
> <http://caml.inria.fr/bin/caml-bugs>
>
>
next prev parent reply other threads:[~2014-09-06 0:00 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-05 21:33 Ashish Agarwal
2014-09-05 21:50 ` Andy Ray
2014-09-05 21:56 ` Richard W.M. Jones
2014-09-05 22:01 ` Sebastien Mondet
2014-09-05 22:06 ` Ashish Agarwal
2014-09-05 22:13 ` Richard W.M. Jones
2014-09-05 22:18 ` Richard W.M. Jones
2014-09-05 22:36 ` Török Edwin
2014-09-05 22:39 ` Martin Jambon
2014-09-05 23:39 ` Ashish Agarwal
2014-09-05 23:59 ` Martin Jambon [this message]
2014-09-06 0:12 ` Jeremy Yallop
2014-09-06 5:51 ` Martin Jambon
2014-09-06 6:00 ` Milan Stanojević
2014-09-06 7:46 ` Frédéric Bour
2014-09-06 19:15 ` Martin Jambon
2014-09-06 19:08 ` Martin Jambon
2014-09-06 20:31 ` David MENTRÉ
2014-09-06 21:57 ` Martin Jambon
2014-09-07 7:34 ` David MENTRÉ
2014-09-07 18:47 ` Alain Frisch
2014-09-08 1:28 ` Martin Jambon
2014-09-13 10:26 ` Martin Jambon
2014-09-14 7:41 ` Martin Jambon
2014-09-05 22:18 ` Christoph Höger
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=540A4E6C.3020301@ens-lyon.org \
--to=martin.jambon@ens-lyon.org \
--cc=agarwal1975@gmail.com \
--cc=caml-list@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