load library from same path as executable
diff --git a/unix/fsatrace.c b/unix/fsatrace.c
index 4851574..1aa98dc 100644
--- a/unix/fsatrace.c
+++ b/unix/fsatrace.c
@@ -9,6 +9,7 @@
 #include <stdarg.h>
 #include <fcntl.h>
 #include <limits.h>
+#include <libproc.h>
 #include "fsatrace.h"
 
 extern char   **environ;
@@ -60,6 +61,7 @@
 	int		r;
 	char		so        [PATH_MAX];
 	char		shname    [PATH_MAX];
+	char		fullpath  [PATH_MAX];
 	int		rc = EXIT_FAILURE;
 	int		child;
 	const char     *out;
@@ -75,12 +77,13 @@
 	r = ftruncate(fd, LOGSZ);
 	assert(!r);
 	buf = mmap(0, LOGSZ, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+	proc_pidpath(getpid(), fullpath, sizeof(fullpath));
 #ifdef __APPLE__
-	snprintf(so, sizeof(so), "%s.dylib", argv[0]);
+	snprintf(so, sizeof(so), "%s.dylib", fullpath);
 	setenv("DYLD_INSERT_LIBRARIES", so, 1);
 	setenv("DYLD_FORCE_FLAT_NAMESPACE", "1", 1);
 #else
-	snprintf(so, sizeof(so), "%s.so", argv[0]);
+	snprintf(so, sizeof(so), "%s.so", fullpath);
 	setenv("LD_PRELOAD", so, 1);
 #endif
 	setenv(ENVOUT, shname, 1);