[llvm-bugs] [Bug 31008] New: OCaml binding memory crash

via llvm-bugs llvm-bugs at lists.llvm.org
Sun Nov 13 22:21:44 PST 2016


https://llvm.org/bugs/show_bug.cgi?id=31008

            Bug ID: 31008
           Summary: OCaml binding memory crash
           Product: new-bugs
           Version: trunk
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
          Assignee: unassignedbugs at nondot.org
          Reporter: youngju.song at sf.snu.ac.kr
                CC: llvm-bugs at lists.llvm.org
    Classification: Unclassified

According to the manual
(https://caml.inria.fr/pub/docs/manual-ocaml/intfc.html)'s Rule 5, block must
be filled by direct assignment after "caml_alloc_small".

```
Rule 5   After a structured block (a block with tag less than No_scan_tag) is
allocated with the low-level functions, all fields of this block must be filled
with well-formed values before the next allocation operation. If the block has
been allocated with caml_alloc_small, filling is performed by direct assignment
to the fields of the block:

        Field(v, n) = vn;
```

However, in the code below, there does not exist such assignment.
https://github.com/llvm-mirror/llvm/blob/master/bindings/ocaml
/llvm/llvm_ocaml.c#L483
https://github.com/llvm-mirror/llvm/blob/master/bindings/ocaml/llvm/llvm_ocaml.c#L630

This actually led to memory crash, and following patch solved it.
```
     result = caml_alloc_small(1, 0);
+    Field(result,0) = Val_int(0);
     Store_field(result, 0, caml_copy_string(C));
```

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20161114/d3050d2a/attachment.html>


More information about the llvm-bugs mailing list