Hi all, Copy of:
generator under Cygwin fails with: Fatal error: exception Unix.Unix_error(Unix.EAGAIN, "fork", "") · Issue #45 · libguestfs/libguestfs https://github.com/libguestfs/libguestfs/issues/45 ... since I realised late I shouldn't post on GitHub issues. I managed to pass the configure stage in Cygwin on windows 10 with: CFLAGS=-fPIC ./autogen.sh --disable-daemon --disable-appliance --with-distro=cygwin ... (and installing relevant Cygwin libraries), with version: ``` user@PC /cygdrive/c/src/libguestfs_git $ git log --oneline -1 088b6d1c8 (HEAD -> master, origin/master, origin/HEAD) get-kernel: fallback to uncompressed vmlinux kernels ``` The setup at end of configure is this: ``` Thank you for downloading libguestfs 1.42.0 This is how we have configured the optional components for you today: Daemon .............................. no Appliance ........................... no QEMU ................................ /cygdrive/c/bin/qemu/qemu-system-x86_64 guestfish and C-based virt tools .... yes FUSE filesystem ..................... yes Default backend ..................... direct GNU gettext for i18n ................ yes OCaml bindings ...................... yes OCaml-based virt tools .............. yes Perl bindings ....................... no Perl-based virt tools ............... no Python bindings ..................... yes Ruby bindings ....................... no Java bindings ....................... no Haskell bindings .................... no PHP bindings ........................ no Erlang bindings ..................... no Lua bindings ........................ no Go bindings ......................... no gobject bindings .................... yes gobject introspection ............... yes Vala bindings ....................... no bash completion ..................... yes Rust bindings ....................... no ``` After that, `make` fails with the following error, which I managed to reconstruct like this: ``` user@PC /cygdrive/c/src/libguestfs_git $ make -C generator clean make: Entering directory '/cygdrive/c/src/libguestfs_git/generator' test -z "*~ *.bak *.orig *.rej *.cmi *.cmo *.cma *.cmx *.cmxa dll*.so *.a *.annot oUnit-*.cache oUnit-*.log *.1 *.3 *.5 *.8 stamp-*.pod bindtests.tmp stamp-generator generator" || rm -f *~ *.bak *.orig *.rej *.cmi *.cmo *.cma *.cmx *.cmxa dll*.so *.a *.annot oUnit-*.cache oUnit-*.log *.1 *.3 *.5 *.8 stamp-*.pod bindtests.tmp stamp-generator generator rm -rf .libs _libs rm -f *.lo make: Leaving directory '/cygdrive/c/src/libguestfs_git/generator' user@PC /cygdrive/c/src/libguestfs_git $ make -C generator make: Entering directory '/cygdrive/c/src/libguestfs_git/generator' OCAMLCMI types.cmi OCAMLC types.cmo OCAMLCMI memoized_cache.cmi OCAMLC memoized_cache.cmo OCAMLCMI utils.cmi OCAMLC utils.cmo OCAMLCMI proc_nr.cmi OCAMLC proc_nr.cmo OCAMLCMI actions_augeas.cmi OCAMLC actions_augeas.cmo OCAMLCMI actions_core.cmi OCAMLC actions_core.cmo OCAMLCMI actions_core_deprecated.cmi OCAMLC actions_core_deprecated.cmo OCAMLCMI actions_debug.cmi OCAMLC actions_debug.cmo OCAMLCMI actions_hivex.cmi OCAMLC actions_hivex.cmo OCAMLCMI actions_hivex_deprecated.cmi OCAMLC actions_hivex_deprecated.cmo OCAMLCMI actions_inspection.cmi OCAMLC actions_inspection.cmo OCAMLCMI actions_inspection_deprecated.cmi OCAMLC actions_inspection_deprecated.cmo OCAMLCMI actions_internal_tests.cmi OCAMLC actions_internal_tests.cmo OCAMLCMI actions_properties.cmi OCAMLC actions_properties.cmo OCAMLCMI actions_properties_deprecated.cmi OCAMLC actions_properties_deprecated.cmo OCAMLCMI actions_tsk.cmi OCAMLC actions_tsk.cmo OCAMLCMI actions_yara.cmi OCAMLC actions_yara.cmo OCAMLCMI actions.cmi OCAMLC actions.cmo OCAMLCMI structs.cmi OCAMLC structs.cmo OCAMLCMI fish_commands.cmi OCAMLC fish_commands.cmo OCAMLCMI optgroups.cmi OCAMLC optgroups.cmo OCAMLCMI prepopts.cmi OCAMLC prepopts.cmo OCAMLCMI events.cmi OCAMLC events.cmo OCAMLCMI pr.cmi OCAMLC pr.cmo OCAMLCMI docstrings.cmi OCAMLC docstrings.cmo OCAMLCMI authors.cmi OCAMLC authors.cmo OCAMLCMI checks.cmi OCAMLC checks.cmo OCAMLCMI c.cmi OCAMLC c.cmo OCAMLCMI XDR.cmi OCAMLC XDR.cmo OCAMLCMI daemon.cmi OCAMLC daemon.cmo OCAMLCMI tests_c_api.cmi OCAMLC tests_c_api.cmo OCAMLCMI fish.cmi OCAMLC fish.cmo OCAMLCMI OCaml.cmi OCAMLC OCaml.cmo OCAMLCMI perl.cmi OCAMLC perl.cmo OCAMLCMI python.cmi OCAMLC python.cmo OCAMLCMI ruby.cmi OCAMLC ruby.cmo OCAMLCMI java.cmi OCAMLC java.cmo OCAMLCMI haskell.cmi OCAMLC haskell.cmo OCAMLCMI csharp.cmi OCAMLC csharp.cmo OCAMLCMI php.cmi OCAMLC php.cmo OCAMLCMI erlang.cmi OCAMLC erlang.cmo OCAMLCMI lua.cmi OCAMLC lua.cmo OCAMLCMI GObject.cmi OCAMLC GObject.cmo OCAMLCMI golang.cmi OCAMLC golang.cmo OCAMLCMI rust.cmi OCAMLC rust.cmo OCAMLCMI bindtests.cmi OCAMLC bindtests.cmo OCAMLCMI errnostring.cmi OCAMLC errnostring.cmo OCAMLCMI customize.cmi OCAMLC customize.cmo OCAMLCMI UEFI.cmi OCAMLC UEFI.cmo OCAMLCMI main.cmi OCAMLC main.cmo make -C ../common/mlstdutils mlstdutils.cma make[1]: Entering directory '/cygdrive/c/src/libguestfs_git/common/mlstdutils' make[1]: 'mlstdutils.cma' is up to date. make[1]: Leaving directory '/cygdrive/c/src/libguestfs_git/common/mlstdutils' ocamlfind ocamlc -g -annot -safe-string -warn-error CDEFLMPSUVYZX+52-3 -ccopt '-fPIC -fno-strict-overflow -Wno-strict-overflow' \ -package unix,str -I . -I . -I ../common/mlstdutils -I ../common/mlstdutils -linkpkg mlstdutils.cma \ types.cmo memoized_cache.cmo utils.cmo proc_nr.cmo actions_augeas.cmo actions_core.cmo actions_core_deprecated.cmo actions_debug.cmo actions_hivex.cmo actions_hivex_deprecated.cmo actions_inspection.cmo actions_inspection_deprecated.cmo actions_internal_tests.cmo actions_properties.cmo actions_properties_deprecated.cmo actions_tsk.cmo actions_yara.cmo actions.cmo structs.cmo fish_commands.cmo optgroups.cmo prepopts.cmo events.cmo pr.cmo docstrings.cmo authors.cmo checks.cmo c.cmo XDR.cmo daemon.cmo tests_c_api.cmo fish.cmo OCaml.cmo perl.cmo python.cmo ruby.cmo java.cmo haskell.cmo csharp.cmo php.cmo erlang.cmo lua.cmo GObject.cmo golang.cmo rust.cmo bindtests.cmo errnostring.cmo customize.cmo UEFI.cmo main.cmo -o generator mkdir -p ../perl/lib/Sys mkdir -p ../ruby/ext/guestfs mkdir -p ../java/com/redhat/et/libguestfs mkdir -p ../csharp mkdir -p ../gobject/src mkdir -p ../gobject/include mkdir -p ../gobject/include/guestfs-gobject cd .. && /cygdrive/c/src/libguestfs_git/generator/generator 0 [main] generator 3260 dofork: child -1 - forked process 14884 died unexpectedly, retry 0, exit code 0xC0000142, errno 11 Fatal error: exception Unix.Unix_error(Unix.EAGAIN, "fork", "") make: *** [Makefile:2244: stamp-generator] Error 2 make: Leaving directory '/cygdrive/c/src/libguestfs_git/generator' ``` For some reason, even if there is `-g` in `OCAML_FLAGS = -g -annot -safe-string`, also `ocamldebug` fails to reveal anything (although, admittedly, this is first time in my life I've ever run `ocamldebug`, or had anything to do with OCaml): ``` $ ocamldebug -cd generator generator OCaml Debugger version 4.04.2 (ocd) step Loading program... 0 [main] ocamldebug 4271 dofork: child -1 - forked process 1276 died unexpectedly, retry 0, exit code 0xC0000142, errno 11 Unix error: 'fork' failed: Resource temporarily unavailable (ocd) q ``` However, gdb reveals some threads are started before the crash: ``` $ gdb --args generator/generator GNU gdb (GDB) (Cygwin 8.2.1-1) 8.2.1 Copyright (C) 2018 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-pc-cygwin". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from generator/generator...(no debugging symbols found)...done. (gdb) r Starting program: /cygdrive/d/src/libguestfs_git/generator/generator [New Thread 3712.0x1b8c] [New Thread 3712.0x2744] [New Thread 3712.0x1b20] [New Thread 3712.0x30d4] [New Thread 3712.0x33b8] 0 [main] generator 4275 dofork: child -1 - forked process 13456 died unexpectedly, retry 0, exit code 0xC0000142, errno 11 Fatal error: exception Unix.Unix_error(Unix.EAGAIN, "fork", "") [Thread 3712.0x33b8 exited with code 2] [Thread 3712.0x1b20 exited with code 2] [Thread 3712.0x2744 exited with code 2] [Inferior 1 (process 3712) exited with code 02] (gdb) q ``` Any suggestions if I can get generator running on Cygwin? _______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://www.redhat.com/mailman/listinfo/libguestfs