From 1d66c36497b329047e495862d0d54002d620e0ea Mon Sep 17 00:00:00 2001 From: Sergey Fedorov Date: Thu, 11 Dec 2025 02:21:52 +0800 Subject: [PATCH] Revert "fix: stop relying on lsof on macos" This reverts commit f10a0295ddbfc259e56b931dfbb2532ec6042592. --- src/dune_stats/dune | 3 --- src/dune_stats/dune_stats.ml | 35 ++++++++---------------- src/dune_stats/dune_stats_stubs.c | 44 ------------------------------- 3 files changed, 11 insertions(+), 71 deletions(-) delete mode 100644 src/dune_stats/dune_stats_stubs.c diff --git src/dune_stats/dune src/dune_stats/dune index b1dc802c4..f610438e4 100644 --- src/dune_stats/dune +++ src/dune_stats/dune @@ -1,6 +1,3 @@ (library (name dune_stats) - (foreign_stubs - (language c) - (names dune_stats_stubs)) (libraries stdune chrome_trace spawn unix)) diff --git src/dune_stats/dune_stats.ml src/dune_stats/dune_stats.ml index a0cdcca03..cc5e5519e 100644 --- src/dune_stats/dune_stats.ml +++ src/dune_stats/dune_stats.ml @@ -1,12 +1,6 @@ open Stdune module Event = Chrome_trace.Event -module Mac = struct - external open_fds : pid:int -> int = "dune_stats_open_fds" - - external available : unit -> bool = "dune_stats_available" -end - module Json = struct include Chrome_trace.Json @@ -166,30 +160,23 @@ module Fd_count = struct let how = ref `Unknown - let pid = lazy (Unix.getpid ()) - let get () = match !how with | `Disable -> Unknown | `Lsof -> lsof () | `Proc_fs -> proc_fs () - | `Mac -> This (Mac.open_fds ~pid:(Lazy.force pid)) | `Unknown -> ( - if Mac.available () then ( - how := `Mac; - This (Mac.open_fds ~pid:(Lazy.force pid))) - else - match proc_fs () with - | This _ as n -> - how := `Proc_fs; - n - | Unknown -> - let res = lsof () in - (how := - match res with - | This _ -> `Lsof - | Unknown -> `Disable); - res) + match proc_fs () with + | This _ as n -> + how := `Proc_fs; + n + | Unknown -> + let res = lsof () in + (how := + match res with + | This _ -> `Lsof + | Unknown -> `Disable); + res) end let record_gc_and_fd stats = diff --git src/dune_stats/dune_stats_stubs.c src/dune_stats/dune_stats_stubs.c deleted file mode 100644 index f10d810e4..000000000 --- src/dune_stats/dune_stats_stubs.c +++ /dev/null @@ -1,44 +0,0 @@ -#include -#include -#include - -#if defined(__APPLE__) -#include -#include - -#define MAX_FDS 1024 // should be enough for anybody - -CAMLprim value dune_stats_open_fds(value v_pid) { - CAMLparam1(v_pid); - pid_t pid = Int_val(v_pid); - int size = PROC_PIDLISTFD_SIZE * MAX_FDS; - struct proc_fdinfo fdinfo[size]; - size = proc_pidinfo(pid, PROC_PIDLISTFDS, 0, fdinfo, size); - if (size == ENOMEM) { - // If we ever end up eating this many fd's, correct metrics would be the - // least of our problems - return MAX_FDS; - } else if (size < 0) { - caml_failwith("proc_pidinfo failed"); - } - int fds = size / PROC_PIDLISTFD_SIZE; - CAMLreturn(Val_int(fds)); -} - -CAMLprim value dune_stats_available(value unit) { - CAMLparam1(unit); - CAMLreturn(Val_true); -} - -#else - -CAMLprim value dune_stats_available(value unit) { - CAMLparam1(unit); - CAMLreturn(Val_false); -} - -CAMLprim value dune_stats_open_fds(value v_pid) { - caml_failwith("function is available only on macos"); -} - -#endif