Description of problem: $ ocaml Objective Caml version 3.12.1 # #use "topfind";; - : unit = () Findlib has been successfully loaded. Additional directives: #require "package";; to load a package #list;; to list the available packages #camlp4o;; to load camlp4 (standard syntax) #camlp4r;; to load camlp4 (revised syntax) #predicates "p,q,...";; to set these predicates Topfind.reset();; to force that packages will be reloaded #thread;; to enable threads - : unit = () # #require "guestfs";; /usr/lib64/ocaml/unix.cma: loaded /usr/lib64/ocaml/guestfs: added to search path /usr/lib64/ocaml/guestfs/mlguestfs.cma: loaded # #use "/usr/share/doc/ocaml-libguestfs-devel-1.17.2/create_disk.ml";; val output : string = "disk.img" libguestfs: trace: set_autosync true libguestfs: trace: set_autosync = 0 Segmentation fault Version-Release number of selected component (if applicable): 1.17.2 How reproducible: 100% (bytecode) Doesn't segfault in native code.
Stack trace: #0 __strlen_sse2 () at ../sysdeps/x86_64/strlen.S:32 #1 0x0000003a24686a76 in __GI___strdup (s=0x1 <Address 0x1 out of bounds>) at strdup.c:42 #2 0x00007ffff109bd8c in guestfs_safe_strdup () from /usr/lib64/libguestfs.so.0 #3 0x00007ffff1335f76 in ocaml_guestfs_add_drive_opts (gv=1, readonlyv=1, formatv=140737352560936, ifacev=1, namev=1, filenamev=1) at guestfs_c_actions.c:732 #4 0x000000000041b3d1 in caml_interprete (prog=0x7ffff7bd2010, prog_size=<optimized out>) at interp.c:905 #5 0x000000000041cf73 in caml_main (argv=0x7fffffffdf08) at startup.c:424 #6 0x0000000000409dbc in main (argc=<optimized out>, argv=<optimized out>) Note in frame #3 that filenamev is bogus; it should be a string value.
Fixed: https://github.com/libguestfs/libguestfs/commit/799852e64691068f3256c27d18870bdb2537c2be https://github.com/libguestfs/libguestfs/commit/eb68a314133c88260cdf4547d7d338446488e698
Fixed upstream in 1.17.3 and 1.16.2.