Bug 785290

Summary: ocaml (bytecode) bindings segfault in 'add_drive_opts'
Product: [Community] Virtualization Tools Reporter: Richard W.M. Jones <rjones>
Component: libguestfsAssignee: Richard W.M. Jones <rjones>
Status: CLOSED UPSTREAM QA Contact:
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: unspecifiedCC: mbooth, virt-maint
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 785305 (view as bug list) Environment:
Last Closed: 2012-01-30 11:19:04 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 785305    

Description Richard W.M. Jones 2012-01-27 21:32:20 UTC
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.

Comment 1 Richard W.M. Jones 2012-01-27 21:42:00 UTC
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.

Comment 3 Richard W.M. Jones 2012-01-30 11:19:04 UTC
Fixed upstream in 1.17.3 and 1.16.2.