Skip to content

Commit 5540479

Browse files
committed
Merge remote-tracking branch 'origin/main' into feat/massif-ignore
2 parents 672bb8c + 926705e commit 5540479

File tree

9 files changed

+45
-61
lines changed

9 files changed

+45
-61
lines changed

.github/macos-14-expected.txt

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -173,24 +173,19 @@ drd/tests/annotate_ignore_write2 (stderr)
173173
drd/tests/annotate_order_1 (stderr)
174174
drd/tests/annotate_order_2 (stderr)
175175
drd/tests/annotate_order_3 (stderr)
176-
drd/tests/annotate_publish_hg (stderr)
177176
drd/tests/annotate_rwlock (stderr)
178-
drd/tests/annotate_rwlock_hg (stderr)
179177
drd/tests/annotate_sem (stderr)
180178
drd/tests/annotate_smart_pointer (stderr)
181179
drd/tests/annotate_smart_pointer2 (stderr)
182180
drd/tests/annotate_spinlock (stderr)
183181
drd/tests/annotate_static (stderr)
184-
drd/tests/annotate_trace_memory (stderr)
185-
drd/tests/annotate_trace_memory_xml (stderr)
186182
drd/tests/atomic_var (stderr)
187183
drd/tests/bug-235681 (stderr)
188184
drd/tests/circular_buffer (stderr)
189185
drd/tests/concurrent_close (stderr)
190186
drd/tests/condvar (stderr)
191187
drd/tests/custom_alloc (stderr)
192188
drd/tests/custom_alloc_fiw (stderr)
193-
drd/tests/dlopen (stdout)
194189
drd/tests/dlopen (stderr)
195190
drd/tests/fork-parallel (stderr)
196191
drd/tests/fork-serial (stderr)
@@ -208,14 +203,10 @@ drd/tests/hg05_race2 (stderr)
208203
drd/tests/hg06_readshared (stderr)
209204
drd/tests/hold_lock_1 (stderr)
210205
drd/tests/hold_lock_2 (stderr)
211-
drd/tests/linuxthreads_det (stderr)
212-
drd/tests/memory_allocation (stderr)
213206
drd/tests/monitor_example (stderr)
214-
drd/tests/new_delete (stderr)
215207
drd/tests/pth_broadcast (stderr)
216208
drd/tests/pth_cancel_locked (stderr)
217209
drd/tests/pth_cleanup_handler (stderr)
218-
drd/tests/pth_cond_destroy_busy (stderr)
219210
drd/tests/pth_cond_race (stderr)
220211
drd/tests/pth_cond_race2 (stderr)
221212
drd/tests/pth_cond_race3 (stderr)
@@ -226,7 +217,6 @@ drd/tests/pth_detached3 (stderr)
226217
drd/tests/pth_inconsistent_cond_wait (stderr)
227218
drd/tests/pth_mutex_reinit (stderr)
228219
drd/tests/pth_once (stderr)
229-
drd/tests/pth_process_shared_mutex (stderr)
230220
drd/tests/pth_uninitialized_cond (stderr)
231221
drd/tests/read_and_free_race (stderr)
232222
drd/tests/recursive_mutex (stderr)
@@ -238,42 +228,28 @@ drd/tests/sem_open2 (stderr)
238228
drd/tests/sem_open3 (stderr)
239229
drd/tests/sem_open_traced (stderr)
240230
drd/tests/shared_timed_mutex (stderr)
241-
drd/tests/sigalrm (stderr)
242-
drd/tests/sigaltstack (stderr)
243231
drd/tests/std_atomic (stderr)
244232
drd/tests/std_list (stderr)
245233
drd/tests/std_mutex (stderr)
246234
drd/tests/std_string (stderr)
247-
drd/tests/str_tester (stderr)
248235
drd/tests/swapcontext (stderr)
249236
drd/tests/tc01_simple_race (stderr)
250237
drd/tests/tc02_simple_tls (stderr)
251238
drd/tests/tc03_re_excl (stderr)
252239
drd/tests/tc04_free_lock (stderr)
253240
drd/tests/tc05_simple_race (stderr)
254241
drd/tests/tc06_two_races (stderr)
255-
drd/tests/tc07_hbl1 (stdout)
256-
drd/tests/tc07_hbl1 (stderr)
257-
drd/tests/tc08_hbl2 (stdout)
258242
drd/tests/tc08_hbl2 (stderr)
259243
drd/tests/tc09_bad_unlock (stderr)
260244
drd/tests/tc10_rec_lock (stderr)
261-
drd/tests/tc11_XCHG (stdout)
262-
drd/tests/tc11_XCHG (stderr)
263245
drd/tests/tc12_rwl_trivial (stderr)
264-
drd/tests/tc13_laog1 (stderr)
265-
drd/tests/tc15_laog_lockdel (stderr)
266246
drd/tests/tc16_byterace (stderr)
267247
drd/tests/tc17_sembar (stderr)
268248
drd/tests/tc19_shadowmem (stderr)
269-
drd/tests/tc21_pthonce (stdout)
270249
drd/tests/tc21_pthonce (stderr)
271250
drd/tests/tc22_exit_w_lock (stderr)
272251
drd/tests/tc23_bogus_condwait (stderr)
273-
drd/tests/threaded-fork-vcs (stderr)
274-
drd/tests/threaded-fork (stderr)
275252
drd/tests/timed_mutex (stderr)
276-
drd/tests/tls_threads (stderr)
277253
drd/tests/trylock (stderr)
278254
drd/tests/unit_bitmap (stderr)
279255
drd/tests/unit_vc (stderr)

.github/macos-26-expected.txt

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -307,24 +307,19 @@ drd/tests/annotate_ignore_write2 (stderr)
307307
drd/tests/annotate_order_1 (stderr)
308308
drd/tests/annotate_order_2 (stderr)
309309
drd/tests/annotate_order_3 (stderr)
310-
drd/tests/annotate_publish_hg (stderr)
311310
drd/tests/annotate_rwlock (stderr)
312-
drd/tests/annotate_rwlock_hg (stderr)
313311
drd/tests/annotate_sem (stderr)
314312
drd/tests/annotate_smart_pointer (stderr)
315313
drd/tests/annotate_smart_pointer2 (stderr)
316314
drd/tests/annotate_spinlock (stderr)
317315
drd/tests/annotate_static (stderr)
318-
drd/tests/annotate_trace_memory (stderr)
319-
drd/tests/annotate_trace_memory_xml (stderr)
320316
drd/tests/atomic_var (stderr)
321317
drd/tests/bug-235681 (stderr)
322318
drd/tests/circular_buffer (stderr)
323319
drd/tests/concurrent_close (stderr)
324320
drd/tests/condvar (stderr)
325321
drd/tests/custom_alloc (stderr)
326322
drd/tests/custom_alloc_fiw (stderr)
327-
drd/tests/dlopen (stdout)
328323
drd/tests/dlopen (stderr)
329324
drd/tests/fork-parallel (stderr)
330325
drd/tests/fork-serial (stderr)
@@ -342,14 +337,10 @@ drd/tests/hg05_race2 (stderr)
342337
drd/tests/hg06_readshared (stderr)
343338
drd/tests/hold_lock_1 (stderr)
344339
drd/tests/hold_lock_2 (stderr)
345-
drd/tests/linuxthreads_det (stderr)
346-
drd/tests/memory_allocation (stderr)
347340
drd/tests/monitor_example (stderr)
348-
drd/tests/new_delete (stderr)
349341
drd/tests/pth_broadcast (stderr)
350342
drd/tests/pth_cancel_locked (stderr)
351343
drd/tests/pth_cleanup_handler (stderr)
352-
drd/tests/pth_cond_destroy_busy (stderr)
353344
drd/tests/pth_cond_race (stderr)
354345
drd/tests/pth_cond_race2 (stderr)
355346
drd/tests/pth_cond_race3 (stderr)
@@ -360,7 +351,6 @@ drd/tests/pth_detached3 (stderr)
360351
drd/tests/pth_inconsistent_cond_wait (stderr)
361352
drd/tests/pth_mutex_reinit (stderr)
362353
drd/tests/pth_once (stderr)
363-
drd/tests/pth_process_shared_mutex (stderr)
364354
drd/tests/pth_uninitialized_cond (stderr)
365355
drd/tests/read_and_free_race (stderr)
366356
drd/tests/recursive_mutex (stderr)
@@ -372,42 +362,28 @@ drd/tests/sem_open2 (stderr)
372362
drd/tests/sem_open3 (stderr)
373363
drd/tests/sem_open_traced (stderr)
374364
drd/tests/shared_timed_mutex (stderr)
375-
drd/tests/sigalrm (stderr)
376-
drd/tests/sigaltstack (stderr)
377365
drd/tests/std_atomic (stderr)
378366
drd/tests/std_list (stderr)
379367
drd/tests/std_mutex (stderr)
380368
drd/tests/std_string (stderr)
381-
drd/tests/str_tester (stderr)
382369
drd/tests/swapcontext (stderr)
383370
drd/tests/tc01_simple_race (stderr)
384371
drd/tests/tc02_simple_tls (stderr)
385372
drd/tests/tc03_re_excl (stderr)
386373
drd/tests/tc04_free_lock (stderr)
387374
drd/tests/tc05_simple_race (stderr)
388375
drd/tests/tc06_two_races (stderr)
389-
drd/tests/tc07_hbl1 (stdout)
390-
drd/tests/tc07_hbl1 (stderr)
391-
drd/tests/tc08_hbl2 (stdout)
392376
drd/tests/tc08_hbl2 (stderr)
393377
drd/tests/tc09_bad_unlock (stderr)
394378
drd/tests/tc10_rec_lock (stderr)
395-
drd/tests/tc11_XCHG (stdout)
396-
drd/tests/tc11_XCHG (stderr)
397379
drd/tests/tc12_rwl_trivial (stderr)
398-
drd/tests/tc13_laog1 (stderr)
399-
drd/tests/tc15_laog_lockdel (stderr)
400380
drd/tests/tc16_byterace (stderr)
401381
drd/tests/tc17_sembar (stderr)
402382
drd/tests/tc19_shadowmem (stderr)
403-
drd/tests/tc21_pthonce (stdout)
404383
drd/tests/tc21_pthonce (stderr)
405384
drd/tests/tc22_exit_w_lock (stderr)
406385
drd/tests/tc23_bogus_condwait (stderr)
407-
drd/tests/threaded-fork-vcs (stderr)
408-
drd/tests/threaded-fork (stderr)
409386
drd/tests/timed_mutex (stderr)
410-
drd/tests/tls_threads (stderr)
411387
drd/tests/trylock (stderr)
412388
drd/tests/unit_bitmap (stderr)
413389
drd/tests/unit_vc (stderr)

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ This repository contains a version of Valgrind including a few patches to improv
2323
Note that every version from macOS 10.12 onwards currently has the following issues:
2424

2525
- using threads and signals together is undefined (crashes, hanging, etc), note: a few tests were disabled because of that
26-
- drd crashes on 10.15 (probably onwards)
2726

2827
## Usage
2928

@@ -68,7 +67,7 @@ brew upgrade --fetch-HEAD LouisBrunner/valgrind/valgrind
6867

6968
Some tests are hanging and were therefore disabled on macOS:
7069

71-
- `memcheck/tests/sigaltstack` (arm64)
70+
- `memcheck/tests/sigaltstack` & `drd/tests/sigaltstack` (arm64)
7271

7372
### Linux (Ubuntu 24.04)
7473

coregrind/m_libcproc.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1045,15 +1045,19 @@ UInt VG_(read_millisecond_timer) ( void )
10451045
now = tv_now.tv_sec * 1000000ULL + tv_now.tv_usec;
10461046
}
10471047
# elif defined(VGO_darwin)
1048-
// Weird: it seems that gettimeofday() doesn't fill in the timeval, but
1049-
// rather returns the tv_sec as the low 32 bits of the result and the
1050-
// tv_usec as the high 32 bits of the result. (But the timeval cannot be
1051-
// NULL!) See bug 200990.
10521048
{ SysRes res;
10531049
struct vki_timeval tv_now = { 0, 0 };
10541050
res = VG_(do_syscall2)(__NR_gettimeofday, (UWord)&tv_now, (UWord)NULL);
10551051
vg_assert(! sr_isError(res));
1052+
# if DARWIN_VERS >= DARWIN_11_00
1053+
now = tv_now.tv_sec * 1000000ULL + tv_now.tv_usec;
1054+
# else
1055+
// Weird: it seems that gettimeofday() doesn't fill in the timeval, but
1056+
// rather returns the tv_sec as the low 32 bits of the result and the
1057+
// tv_usec as the high 32 bits of the result. (But the timeval cannot be
1058+
// NULL!) See bug 200990.
10561059
now = sr_Res(res) * 1000000ULL + sr_ResHI(res);
1060+
# endif
10571061
}
10581062

10591063
# else

coregrind/m_mach/dyld_cache.c

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,13 @@ static void output_debug_info(const dyld_cache_header* dyld_cache);
6262
typedef struct {
6363
const dyld_cache_header* header;
6464
Addr slide;
65+
Bool tried;
6566
} DYLDCache;
6667

6768
static DYLDCache dyld_cache = {
6869
.header = NULL,
6970
.slide = 0,
71+
.tried = False,
7072
};
7173

7274
static Addr calculate_relative(const dyld_cache_header * header, Addr offset) {
@@ -209,25 +211,46 @@ Addr VG_(dyld_cache_get_slide)(void) {
209211
return dyld_cache.slide;
210212
}
211213

212-
void VG_(dyld_cache_init)(void) {
214+
int ensure_init(void) {
215+
if (dyld_cache.header != NULL) {
216+
return 1;
217+
}
218+
219+
// FIXME: unlikely race condition?
220+
if (dyld_cache.tried) {
221+
return 0;
222+
}
223+
dyld_cache.tried = True;
224+
213225
if (!try_to_init()) {
214226
VG_(dmsg)(
215227
"WARNING: could not read from dyld shared cache (DSC)\n"
216228
"Some reports (especially memory leaks) might be missing or incorrect (false-positives)\n"
217229
);
218-
return;
230+
return 0;
219231
}
220232
// We currently detect if dyld is loading/using a library by checking if stat64 fails.
221233
// However, dyld doesn't seem to call stat64 for all of them anymore.
222234
// All arm64 binaries are executables but some x86 ones might not be so let's avoid them just to be safe.
223235
VG_(dyld_cache_load_library)("/usr/lib/system/libsystem_kernel.dylib");
224236
VG_(dyld_cache_load_library)("/usr/lib/system/libsystem_pthread.dylib");
225237
VG_(dyld_cache_load_library)("/usr/lib/system/libsystem_platform.dylib");
238+
239+
return 1;
240+
}
241+
242+
void VG_(dyld_cache_init)(const HChar* tool) {
243+
// drd crashes if you map memory segments in m_main
244+
if (VG_(strcmp)(tool, "drd") == 0) {
245+
return;
246+
}
247+
248+
ensure_init();
226249
}
227250

228251
int VG_(dyld_cache_might_be_in)(const HChar* path) {
229252
// If not init'd, there is no point
230-
if (dyld_cache.header == NULL) {
253+
if (!ensure_init()) {
231254
return 0;
232255
}
233256

@@ -266,8 +289,12 @@ int VG_(dyld_cache_load_library)(const HChar* path) {
266289
ULong res = 0;
267290
SizeT len = 0;
268291

292+
if (VG_(strstr)(path, "/PrivateFrameworks/") != NULL) {
293+
return 0;
294+
}
295+
269296
// If not init'd, there is no point trying
270-
if (dyld_cache.header == NULL) {
297+
if (!ensure_init()) {
271298
return 0;
272299
}
273300

coregrind/m_main.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1974,10 +1974,11 @@ Int valgrind_main ( Int argc, HChar **argv, HChar **envp )
19741974
// Initialize the dyld cache, which is required with macOS 11 (Big Sur) and onwards
19751975
// as some system libraries aren't provided on the disk anymore
19761976
// p: none
1977+
// Note: some tools don't like to start mapping memory right way, so we do it lazily in those cases.
19771978
//--------------------------------------------------------------
19781979
# if defined(VGO_darwin) && DARWIN_VERS >= DARWIN_11_00
19791980
if (the_iifii.dynamic) {
1980-
VG_(dyld_cache_init)();
1981+
VG_(dyld_cache_init)(VG_(clo_toolname));
19811982
}
19821983
# endif
19831984

coregrind/pub_core_mach.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ extern void VG_(mach_record_system_memory)(void);
7272
#if DARWIN_VERS >= DARWIN_11_00
7373
// Dyld shared cache (DSC) parsing, which is required as system libraries are not provided on disk
7474
// starting with macOS 11.0 (Big Sur)
75-
extern void VG_(dyld_cache_init)(void);
75+
extern void VG_(dyld_cache_init)(const HChar*);
7676
extern int VG_(dyld_cache_might_be_in)(const HChar*);
7777
extern int VG_(dyld_cache_load_library)(const HChar*);
7878
extern Addr VG_(dyld_cache_get_slide)(void);
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
prereq: ./supported_libpthread && ! ../../tests/libc_test glibc 2.24.90
1+
prereq: ./supported_libpthread && ! ../../tests/os_test darwin && ! ../../tests/libc_test glibc 2.24.90
22
prog: pth_cond_destroy_busy

drd/tests/sigaltstack.vgtest

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1+
prereq: ! ../../tests/os_test darwin
12
prog: ../../memcheck/tests/sigaltstack
23
vgopts: -q

0 commit comments

Comments
 (0)