I'm using OCaml 4.00.1 with (among others) LWT 2.3.2. We have inexplicable crashes of our server process. I've been digging through our source code looking but no success so far. I've run our process with the Valgrind memory checker and I get some unexpected warnings like:
==4181== Conditional jump or move depends on uninitialised value(s)
==4181== at 0xECEDDA: camlWeak__loop_1164 (weak.ml:209)
==4181== by 0xDC9A24: camlLwt_io__make_1212 (lwt_io.ml:544)
==4181== by 0xD03E24: camlConnection_util__to_conn_1054 (connection_util.ml:81)
==4181== by 0xB514B5: camlLwt_server__fun_1894 (Lwt_server.ml:202)
==4181== by 0xDD70B3: camlLwt__try_bind_1364 (lwt.ml:553)
==4181== by 0xDD8945: camlLwt__with_value_1552 (lwt.ml:977)
==4181== by 0xB51E9F: camlLwt_server__fun_1857 (Lwt_server.ml:197)
==4181== by 0xB52CCA: camlLwt_server__fun_1758 (Lwt_server.ml:175)
==4181== by 0xDD3C95: camlLwt__fun_2035 (lwt.ml:438)
==4181== by 0xDD593D: camlLwt__run_waiters_1128 (lwt.ml:153)
==4181== by 0xDD593D: camlLwt__run_waiters_1128 (lwt.ml:153)
==4181== by 0xDD58AC: camlLwt__run_waiters_rec_1110 (lwt.ml:136)
and
==4181== Conditional jump or move depends on uninitialised value(s)
==4181== at 0x10F605B: caml_page_table_lookup (in /home/christim/tmp/DSS-buchla/target/debug/bin/dss.bin)
==4181== by 0x10F6724: caml_modify (in /home/christim/tmp/DSS-buchla/target/debug/bin/dss.bin)
==4181== by 0xECEDB1: camlWeak__loop_1164 (weak.ml:208)
==4181== by 0xDC9A24: camlLwt_io__make_1212 (lwt_io.ml:544)
==4181== by 0xDCDCC8: camlLwt_io__entry (lwt_io.ml:1333)
==4181== by 0xA660E8: caml_program (in /home/christim/tmp/DSS-buchla/target/debug/bin/dss.bin)
==4181== by 0x1103CFD: ??? (in /home/christim/tmp/DSS-buchla/target/debug/bin/dss.bin)
==4181== by 0x10F2964: caml_main (in /home/christim/tmp/DSS-buchla/target/debug/bin/dss.bin)
==4181== by 0x10F299F: main (in /home/christim/tmp/DSS-buchla/target/debug/bin/dss.bin)
and
==4181== Use of uninitialised value of size 8
==4181== at 0x10F5AA3: caml_empty_minor_heap (in /home/christim/tmp/DSS-buchla/target/debug/bin/dss.bin)
==4181== by 0x10F5BB6: caml_minor_collection (in /home/christim/tmp/DSS-buchla/target/debug/bin/dss.bin)
==4181== by 0x10F3E52: caml_garbage_collection (in /home/christim/tmp/DSS-buchla/target/debug/bin/dss.bin)
==4181== by 0x1103B1F: ??? (in /home/christim/tmp/DSS-buchla/target/debug/bin/dss.bin)
==4181== by 0xEB1148: camlPrintf__ac_of_format_1155 (printf.ml:306)
==4181== by 0xEB11E4: camlPrintf__kapr_1179 (printf.ml:311)
==4181== by 0xDA6201: camlLwt_logging__string_of_time_1072 (Lwt_logging.ml:137)
==4181== by 0xDA6C40: camlLwt_logging__log_1193 (Lwt_logging.ml:206)
==4181== by 0xD0304A: camlConnection_util__fun_1298 (connection_util.ml:45)
==4181== by 0xDD6B9F: camlLwt__catch_1315 (lwt.ml:470)
==4181== by 0xEACB28: camlCamlinternalLazy__force_lazy_block_1010 (camlinternalLazy.ml:27)
==4181== by 0xDD6B9F: camlLwt__catch_1315 (lwt.ml:470)
In particular, this last one worries me. All evidence I find seems to indicate a rogue "free" call freeing data structures are random. Are these unitialized values to be expected?
Mark