caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Ashish Agarwal <agarwal1975@gmail.com>
To: Martin Jambon <martin.jambon@ens-lyon.org>
Cc: Caml List <caml-list@inria.fr>
Subject: Re: [Caml-list] segfault in simple program with 4.02 native
Date: Fri, 5 Sep 2014 19:39:54 -0400	[thread overview]
Message-ID: <CAMu2m2JaASyBUgX3x4=a_LByuYcwzEB72EnNcEDE=oZNG=2++w@mail.gmail.com> (raw)
In-Reply-To: <540A3B85.6010609@ens-lyon.org>

[-- Attachment #1: Type: text/plain, Size: 2787 bytes --]

>  First try a 'make test' from atdgen's source
...
The following tests failed:
ocaml internals
biniou correctness
json correctness
*** FAILURE ***

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>
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 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)
> and see if it passes.
>
>
> Martin
>
>
>
> --
> Caml-list mailing list.  Subscription management and archives:
> https://sympa.inria.fr/sympa/arc/caml-list
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>

[-- Attachment #2: Type: text/html, Size: 4253 bytes --]

  reply	other threads:[~2014-09-05 23:40 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 [this message]
2014-09-05 23:59             ` Martin Jambon
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='CAMu2m2JaASyBUgX3x4=a_LByuYcwzEB72EnNcEDE=oZNG=2++w@mail.gmail.com' \
    --to=agarwal1975@gmail.com \
    --cc=caml-list@inria.fr \
    --cc=martin.jambon@ens-lyon.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 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).