You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
1
(18) |
2
(35) |
3
(34) |
4
(25) |
5
(16) |
6
(32) |
|
7
(7) |
8
(13) |
9
(20) |
10
(17) |
11
(10) |
12
(18) |
13
(9) |
|
14
(5) |
15
(26) |
16
(23) |
17
(5) |
18
(1) |
19
(4) |
20
(3) |
|
21
(10) |
22
(13) |
23
(13) |
24
(23) |
25
(30) |
26
(13) |
27
(6) |
|
28
(1) |
29
(16) |
30
(15) |
|
|
|
|
|
From: Greg P. <gp...@ap...> - 2009-06-06 22:53:41
|
On Jun 6, 2009, at 2:50 PM, Nicholas Nethercote wrote: > On Sun, Jun 7, 2009 at 4:50 AM, Michael R Sweet<ms...@ap...> > wrote: >> >> I just tried a fresh checkout, autogen.sh, configure, make, and make >> regtest and didn't get the error on this system. Perhaps there is >> something different about the nightly build path? > > You can look in the old.verbose and new.verbose files for a full log > of what's happened. Maybe if you replicate exactly the commands in > those you'll be able to work out the problem. The commands used are > very similar to those above. > > Or, maybe there is some environment difference between running those > by hand and running under whatever scheduling program you're using? Running that compile with -E to get preprocessed output might be informative. -- Greg Parker gp...@ap... Runtime Wrangler |
|
From: <sv...@va...> - 2009-06-06 22:30:41
|
Author: rjwalsh Date: 2009-06-06 23:29:38 +0100 (Sat, 06 Jun 2009) New Revision: 10273 Log: More ignore updates. Modified: trunk/cachegrind/tests/ trunk/cachegrind/tests/x86/ trunk/callgrind/tests/ trunk/drd/tests/ trunk/exp-ptrcheck/tests/ trunk/helgrind/tests/ trunk/massif/perf/ trunk/massif/tests/ trunk/memcheck/perf/ trunk/memcheck/tests/ trunk/memcheck/tests/darwin/ trunk/memcheck/tests/x86/ trunk/none/tests/ trunk/none/tests/darwin/ trunk/none/tests/x86/ trunk/perf/ trunk/tests/ Property changes on: trunk/cachegrind/tests ___________________________________________________________________ Name: svn:ignore - cachegrind.out cachegrind.out.* chdir clreq .deps dlclose Makefile Makefile.in *.so *.stderr.diff* *.stderr.out *.stdout.diff* *.stdout.out wrap5 + *.dSYM *.so *.stderr.diff* *.stderr.out *.stdout.diff* *.stdout.out .deps Makefile Makefile.in cachegrind.out cachegrind.out.* chdir clreq dlclose wrap5 Property changes on: trunk/cachegrind/tests/x86 ___________________________________________________________________ Name: svn:ignore - cachegrind.out cachegrind.out.* .deps fpu-28-108 Makefile Makefile.in *.stderr.diff *.stderr.out *.stdout.diff *.stdout.out + *.dSYM *.stderr.diff *.stderr.out *.stdout.diff *.stdout.out .deps Makefile Makefile.in cachegrind.out cachegrind.out.* fpu-28-108 Property changes on: trunk/callgrind/tests ___________________________________________________________________ Name: svn:ignore - callgrind.out.* clreq .deps Makefile Makefile.in simwork *.stderr.diff* *.stderr.out *.stdout.diff* *.stdout.out threads + *.dSYM *.stderr.diff* *.stderr.out *.stdout.diff* *.stdout.out .deps Makefile Makefile.in callgrind.out.* clreq simwork threads Property changes on: trunk/drd/tests ___________________________________________________________________ Name: svn:ignore - *.stderr.diff* *.stderr.out *.stdout.diff* *.stdout.out .deps annotate_rwlock atomic_var bar_bad bar_trivial boost_thread circular_buffer drd_bitmap_test fp_race hg01_all_ok hg02_deadlock hg03_inherit hg04_race hg05_race2 hg06_readshared hold_lock linuxthreads_det Makefile Makefile.in matinv memory_allocation monitor_example new_delete omp_matinv omp_prime omp_printf pth_barrier pth_barrier_race pth_barrier_reinit pth_broadcast pth_cancel_locked pth_cond_race pth_create_chain pth_create_glibc_2_0 pth_detached pth_detached_sem pth_inconsistent_cond_wait pth_mutex_reinit pth_process_shared_mutex pth_spinlock qt4_mutex qt4_rwlock qt4_semaphore recursive_mutex rwlock_race rwlock_test sem_as_mutex sigalrm tc01_simple_race tc02_simple_tls tc03_re_excl tc04_free_lock tc05_simple_race tc06_two_races tc07_hbl1 tc08_hbl2 tc09_bad_unlock tc10_rec_lock tc11_XCHG tc12_rwl_trivial tc13_laog1 tc15_laog_lockdel tc16_byterace tc17_sembar tc18_semabuse tc19_shadowmem tc20_verifywrap tc21_pthonce tc22_exit_w_lock tc23_bogus_condwait tc24_nonzero_sem thread_name trylock tsan_unittest vg_regtest.tmp* + *.dSYM *.stderr.diff* *.stderr.out *.stdout.diff* *.stdout.out .deps Makefile Makefile.in annotate_rwlock atomic_var bar_bad bar_trivial boost_thread circular_buffer drd_bitmap_test fp_race hg01_all_ok hg02_deadlock hg03_inherit hg04_race hg05_race2 hg06_readshared hold_lock linuxthreads_det matinv memory_allocation monitor_example new_delete omp_matinv omp_prime omp_printf pth_barrier pth_barrier_race pth_barrier_reinit pth_broadcast pth_cancel_locked pth_cond_race pth_create_chain pth_create_glibc_2_0 pth_detached pth_detached_sem pth_inconsistent_cond_wait pth_mutex_reinit pth_process_shared_mutex pth_spinlock qt4_mutex qt4_rwlock qt4_semaphore recursive_mutex rwlock_race rwlock_test sem_as_mutex sigalrm tc01_simple_race tc02_simple_tls tc03_re_excl tc04_free_lock tc05_simple_race tc06_two_races tc07_hbl1 tc08_hbl2 tc09_bad_unlock tc10_rec_lock tc11_XCHG tc12_rwl_trivial tc13_laog1 tc15_laog_lockdel tc16_byterace tc17_sembar tc18_semabuse tc19_shadowmem tc20_verifywrap tc21_pthonce tc22_exit_w_lock tc23_bogus_condwait tc24_nonzero_sem thread_name trylock tsan_unittest vg_regtest.tmp* Property changes on: trunk/exp-ptrcheck/tests ___________________________________________________________________ Name: svn:ignore - *.out *.stderr.diff* *.stdout.diff* .deps add and arith bad_percentify base ccc cmp fp globalerr hackedbz2 hp_bounds hp_dangle idiv imul justify Makefile Makefile.in mm neg not or partial preen_invars pth_create pth_specific realloc stackerr strcpy strlen sub supp syscall tricky unaligned xor zero + *.dSYM *.out *.so *.stderr.diff* *.stdout.diff* .deps Makefile Makefile.in add and arith bad_percentify base ccc cmp fp globalerr hackedbz2 hp_bounds hp_dangle idiv imul justify mm neg not or partial preen_invars pth_create pth_specific realloc stackerr strcpy strlen sub supp syscall tricky unaligned xor zero Property changes on: trunk/helgrind/tests ___________________________________________________________________ Name: svn:ignore - *.stderr.diff* *.stderr.out *.stdout.diff* *.stdout.out .deps bar_bad bar_trivial hg01_all_ok hg02_deadlock hg03_inherit hg04_race hg05_race2 hg06_readshared Makefile Makefile.in pth_barrier rwlock_race rwlock_test tc01_simple_race tc02_simple_tls tc03_re_excl tc04_free_lock tc05_simple_race tc06_two_races tc07_hbl1 tc08_hbl2 tc09_bad_unlock tc10_rec_lock tc11_XCHG tc12_rwl_trivial tc13_laog1 tc14_laog_dinphils tc15_laog_lockdel tc16_byterace tc17_sembar tc18_semabuse tc19_shadowmem tc20_verifywrap tc21_pthonce tc22_exit_w_lock tc23_bogus_condwait tc24_nonzero_sem + *.dSYM *.stderr.diff* *.stderr.out *.stdout.diff* *.stdout.out .deps Makefile Makefile.in bar_bad bar_trivial hg01_all_ok hg02_deadlock hg03_inherit hg04_race hg05_race2 hg06_readshared pth_barrier rwlock_race rwlock_test tc01_simple_race tc02_simple_tls tc03_re_excl tc04_free_lock tc05_simple_race tc06_two_races tc07_hbl1 tc08_hbl2 tc09_bad_unlock tc10_rec_lock tc11_XCHG tc12_rwl_trivial tc13_laog1 tc14_laog_dinphils tc15_laog_lockdel tc16_byterace tc17_sembar tc18_semabuse tc19_shadowmem tc20_verifywrap tc21_pthonce tc22_exit_w_lock tc23_bogus_condwait tc24_nonzero_sem Property changes on: trunk/massif/perf ___________________________________________________________________ Name: svn:ignore - .deps Makefile Makefile.in many-xpts + *.dSYM .deps Makefile Makefile.in many-xpts Property changes on: trunk/massif/tests ___________________________________________________________________ Name: svn:ignore - *.post.diff* *.post.out *.stderr.diff* *.stderr.out *.stdout.diff* *.stdout.out .deps alloc-fns basic basic_malloc big-alloc culling1 culling2 custom_alloc deep ignored ignoring insig long-names long-time Makefile Makefile.in malloc_usable massif.*.aux massif.*.hp massif.*.html massif.*.ps massif.*.txt massif.out.* new-cpp null one overloaded-new peak realloc thresholds zero + *.dSYM *.post.diff* *.post.out *.stderr.diff* *.stderr.out *.stdout.diff* *.stdout.out .deps Makefile Makefile.in alloc-fns basic basic_malloc big-alloc culling1 culling2 custom_alloc deep ignored ignoring insig long-names long-time malloc_usable massif.*.aux massif.*.hp massif.*.html massif.*.ps massif.*.txt massif.out.* new-cpp null one overloaded-new peak realloc thresholds zero Property changes on: trunk/memcheck/perf ___________________________________________________________________ Name: svn:ignore - .deps Makefile Makefile.in many-loss-records + *.dSYM .deps Makefile Makefile.in many-loss-records Property changes on: trunk/memcheck/tests ___________________________________________________________________ Name: svn:ignore - *.stderr.diff* *.stderr.out *.stdout.diff* *.stdout.out .deps addressable badaddrvalue badfree badjump badjump2 badloop badpoll badrw brk brk2 buflen_check clientperm clientstackperm custom_alloc deep_templates describe-block dir doublefree erringfds error_counts errs1 execve execve2 exitprog file_locking filter_leak_check_size filter_stderr fprw fwrite hello inits inline leak-0 leak-cases leak-cycle leak-pool leak-regroot leak-tree leakotron linux-capget linux-syscalls-2007 linux-syslog-syscall linux-timerfd-syscall long_namespace_xml lsframe1 lsframe2 Makefile Makefile.in mallinfo malloc1 malloc2 malloc3 malloc_free_fill malloc_usable manuel1 manuel2 manuel3 match-overrun memalign2 memalign_test memcmptest mempool metadata mismatches mmaptest nanoleak nanoleak2 nanoleak_supp new_nothrow new_override noisy_child null_socket origin1-yes origin2-not-quite origin3-no origin4-many origin5-bz2 origin6-fp oset_test overlap partiallydefinedeq partial_load pdb-realloc pdb-realloc2 pipe pointer-trace post-syscall realloc1 realloc2 realloc3 scalar scalar_exit_group scalar_fork scalar_supp scalar_vfork sh-mem sh-mem-random sigaltstack sigkill signal2 sigprocmask stack_changes stack_switch strchr str_tester supp1 supp2 suppfree supp_unknown threadederrno trivialleak unit_libcbase unit_oset varinfo1 varinfo2 varinfo3 varinfo4 varinfo5 varinfo5so.so varinfo6 vcpu_bz2 vcpu_fbench vcpu_fnfns vgtest_ume weirdioctl with space wrap1 wrap2 wrap3 wrap4 wrap5 wrap6 wrap7 wrap7so.so wrap8 writev xml1 zeropage + *.dSYM *.stderr.diff* *.stderr.out *.stdout.diff* *.stdout.out .deps Makefile Makefile.in addressable badaddrvalue badfree badjump badjump2 badloop badpoll badrw brk brk2 buflen_check clientperm clientstackperm custom_alloc deep_templates describe-block dir doublefree erringfds error_counts errs1 execve execve2 exitprog file_locking filter_leak_check_size filter_stderr fprw fwrite hello inits inline leak-0 leak-cases leak-cycle leak-pool leak-regroot leak-tree leakotron linux-capget linux-syscalls-2007 linux-syslog-syscall linux-timerfd-syscall long_namespace_xml lsframe1 lsframe2 mallinfo malloc1 malloc2 malloc3 malloc_free_fill malloc_usable manuel1 manuel2 manuel3 match-overrun memalign2 memalign_test memcmptest mempool metadata mismatches mmaptest nanoleak nanoleak2 nanoleak_supp new_nothrow new_override noisy_child null_socket origin1-yes origin2-not-quite origin3-no origin4-many origin5-bz2 origin6-fp oset_test overlap partial_load partiallydefinedeq pdb-realloc pdb-realloc2 pipe pointer-trace post-syscall realloc1 realloc2 realloc3 scalar scalar_exit_group scalar_fork scalar_supp scalar_vfork sh-mem sh-mem-random sigaltstack sigkill signal2 sigprocmask stack_changes stack_switch str_tester strchr supp1 supp2 supp_unknown suppfree threadederrno trivialleak unit_libcbase unit_oset varinfo1 varinfo2 varinfo3 varinfo4 varinfo5 varinfo5so.so varinfo6 vcpu_bz2 vcpu_fbench vcpu_fnfns vgtest_ume weirdioctl with space wrap1 wrap2 wrap3 wrap4 wrap5 wrap6 wrap7 wrap7so.so wrap8 writev xml1 zeropage Property changes on: trunk/memcheck/tests/darwin ___________________________________________________________________ Name: svn:ignore - .deps Makefile Makefile.in + *.dSYM .deps Makefile Makefile.in scalar scalar_fork scalar_vfork Property changes on: trunk/memcheck/tests/x86 ___________________________________________________________________ Name: svn:ignore - *.stderr.diff* *.stderr.out *.stdout.diff *.stdout.out .deps Makefile Makefile.in bug133694 bug152022 espindola2 fpeflags fprem fxsave int3-x86 more_x86_fp pushfpopf pushfw_x86 pushpopmem scalar scalar_exit_group scalar_fork scalar_supp scalar_vfork sse_memory tronical xor-undef-x86 + *.dSYM *.stderr.diff* *.stderr.out *.stdout.diff *.stdout.out .deps Makefile Makefile.in bug133694 bug152022 espindola2 fpeflags fprem fxsave int3-x86 more_x86_fp pushfpopf pushfw_x86 pushpopmem scalar scalar_exit_group scalar_fork scalar_supp scalar_vfork sse_memory tronical xor-undef-x86 Property changes on: trunk/none/tests ___________________________________________________________________ Name: svn:ignore - ansi args as_mmap as_shm async-sigs bitfield1 blockfault bug129866 closeall coolo_sigaction coolo_strlen .deps discard exec-sigmask execve faultstatus fcntl_setown fdleak_cmsg fdleak_creat fdleak_dup fdleak_dup2 fdleak_fcntl fdleak_ipv4 fdleak_open fdleak_pipe fdleak_socketpair floored fork fucomip gxx304 insn_basic insn_basic.c insn_cmov insn_cmov.c insn_fpu insn_fpu.c insn_mmx insn_mmx.c insn_mmxext insn_mmxext.c insn_sse insn_sse2 insn_sse2.c insn_sse.c Makefile Makefile.in manythreads map_unaligned map_unmap mq mremap mremap2 munmap_exe nestedfns pending pluto pth_atfork1 pth_blockedsig pth_cancel1 pth_cancel2 pth_cvsimple pth_detached pth_empty pth_exit pth_exit2 pth_mutexspeed pth_once pth_rwlock pth_semaphore1 pth_simple_mutex pth_simple_threads pth_specific pth_stackalign pth_yield rcrl readline1 resolv res_search rlimit_nofile selfrun sem semlimit sha1_test shortpush shorts sigstackgrowth smc1 *.so stackgrowth *.stderr.diff* *.stderr.out *.stdout.diff* *.stdout.out susphello syscall-restart1 syscall-restart2 system threadederrno threaded-fork thread-exits tls vgcore.* vgprintf yield + *.dSYM *.so *.stderr.diff* *.stderr.out *.stdout.diff* *.stdout.out .deps Makefile Makefile.in ansi args as_mmap as_shm async-sigs bitfield1 blockfault bug129866 closeall coolo_sigaction coolo_strlen discard exec-sigmask execve faultstatus fcntl_setown fdleak_cmsg fdleak_creat fdleak_dup fdleak_dup2 fdleak_fcntl fdleak_ipv4 fdleak_open fdleak_pipe fdleak_socketpair floored fork fucomip gxx304 insn_basic insn_basic.c insn_cmov insn_cmov.c insn_fpu insn_fpu.c insn_mmx insn_mmx.c insn_mmxext insn_mmxext.c insn_sse insn_sse.c insn_sse2 insn_sse2.c manythreads map_unaligned map_unmap mq mremap mremap2 munmap_exe nestedfns pending pluto pth_atfork1 pth_blockedsig pth_cancel1 pth_cancel2 pth_cvsimple pth_detached pth_empty pth_exit pth_exit2 pth_mutexspeed pth_once pth_rwlock pth_semaphore1 pth_simple_mutex pth_simple_threads pth_specific pth_stackalign pth_yield rcrl readline1 res_search resolv rlimit_nofile selfrun sem semlimit sha1_test shortpush shorts sigstackgrowth smc1 stackgrowth susphello syscall-restart1 syscall-restart2 system thread-exits threaded-fork threadederrno tls vgcore.* vgprintf yield Property changes on: trunk/none/tests/darwin ___________________________________________________________________ Name: svn:ignore - .deps Makefile Makefile.in + .deps Makefile Makefile.in apple-main-arg apple-main-arg.dSYM rlimit rlimit.dSYM Property changes on: trunk/none/tests/x86 ___________________________________________________________________ Name: svn:ignore - badseg bt_everything bt_literal bug125959-x86 bug126147-x86 bug132813-x86 bug135421-x86 bug137714-x86 bug152818-x86 cmpxchg8b cpuid cse_fail dastest .deps faultstatus fcmovnu fpu_lazy_eflags fxtract getseg incdec_alt insn_basic insn_basic.c insn_cmov insn_cmov.c insn_fpu insn_fpu.c insn_mmx insn_mmx.c insn_mmxext insn_mmxext.c insn_sse insn_sse2 insn_sse2.c insn_sse3 insn_sse3.c insn_sse.c insn_ssse3 insn_ssse3.c int jcxz lahf looper Makefile Makefile.in movx pushpopseg rcl_assert sbbmisc seg_override sigcontext smc1 ssse3_misaligned *.stderr.diff *.stderr.out *.stdout.diff *.stdout.out yield + *.dSYM *.stderr.diff *.stderr.out *.stdout.diff *.stdout.out .deps Makefile Makefile.in badseg bt_everything bt_literal bug125959-x86 bug126147-x86 bug132813-x86 bug135421-x86 bug137714-x86 bug152818-x86 cmpxchg8b cpuid cse_fail dastest faultstatus fcmovnu fpu_lazy_eflags fxtract getseg incdec_alt insn_basic insn_basic.c insn_cmov insn_cmov.c insn_fpu insn_fpu.c insn_mmx insn_mmx.c insn_mmxext insn_mmxext.c insn_sse insn_sse.c insn_sse2 insn_sse2.c insn_sse3 insn_sse3.c insn_ssse3 insn_ssse3.c int jcxz lahf looper movx pushpopseg rcl_assert sbbmisc seg_override sigcontext smc1 ssse3_misaligned yield Property changes on: trunk/perf ___________________________________________________________________ Name: svn:ignore - .deps Makefile Makefile.in fbench vg_perf ffbench bz2 sarp bigcode tinycc heap + *.dSYM .deps Makefile Makefile.in bigcode bz2 fbench ffbench heap sarp tinycc vg_perf Property changes on: trunk/tests ___________________________________________________________________ Name: svn:ignore - .deps arch_test cputest Makefile Makefile.in os_test toobig-allocs true vg_regtest x86_amd64_features + *.dSYM .deps Makefile Makefile.in arch_test cputest os_test toobig-allocs true vg_regtest x86_amd64_features |
|
From: <sv...@va...> - 2009-06-06 22:14:42
|
Author: rjwalsh Date: 2009-06-06 23:13:25 +0100 (Sat, 06 Jun 2009) New Revision: 10272 Log: Update ignores. Modified: trunk/auxprogs/ trunk/cachegrind/ trunk/callgrind/ trunk/coregrind/ trunk/coregrind/m_mach/ trunk/drd/ trunk/exp-ptrcheck/ trunk/helgrind/ trunk/lackey/ trunk/massif/ trunk/memcheck/ trunk/none/ Property changes on: trunk/auxprogs ___________________________________________________________________ Name: svn:ignore - .deps libmpiwrap-PPC32_LINUX.so libmpiwrap-PPC64_LINUX.so Makefile Makefile.in valgrind-listener + .deps Makefile Makefile.in libmpiwrap-PPC32_LINUX.so libmpiwrap-PPC64_LINUX.so libmpiwrap-x86-darwin.so libmpiwrap-x86-darwin.so.dSYM valgrind-listener Property changes on: trunk/cachegrind ___________________________________________________________________ Name: svn:ignore - cachegrind-amd64-linux cachegrind-ppc32-linux cachegrind-ppc64-linux cachegrind-x86-linux cg_annotate cg_merge .deps Makefile Makefile.in *.so + *.so .deps Makefile Makefile.in cachegrind-amd64-linux cachegrind-ppc32-linux cachegrind-ppc64-linux cachegrind-x86-darwin cachegrind-x86-linux cg_annotate cg_merge Property changes on: trunk/callgrind ___________________________________________________________________ Name: svn:ignore - .deps Makefile Makefile.in callgrind-amd64-linux callgrind-ppc32-linux callgrind-ppc64-linux callgrind-x86-linux *.so callgrind_annotate callgrind_control + *.so .deps Makefile Makefile.in callgrind-amd64-linux callgrind-ppc32-linux callgrind-ppc64-linux callgrind-x86-darwin callgrind-x86-linux callgrind_annotate callgrind_control Property changes on: trunk/coregrind ___________________________________________________________________ Name: svn:ignore - *.a .deps Makefile Makefile.in no_op_client_for_valgrind *.so stage2 stage2.lds valgrind vg_intercept.c vg_replace_malloc.c vg_toolint.c vg_toolint.h + *.a *.so .deps Makefile Makefile.in no_op_client_for_valgrind stage2 stage2.lds valgrind vg_intercept.c vg_replace_malloc.c vg_toolint.c vg_toolint.h vgpreload_core-x86-darwin.so.dSYM Property changes on: trunk/coregrind/m_mach ___________________________________________________________________ Name: svn:ignore + mach_vm.h mach_vmServer.c mach_vmUser.c task.h taskServer.c taskUser.c thread_act.h thread_actServer.c thread_actUser.c vm_map.h vm_mapServer.c vm_mapUser.c Property changes on: trunk/drd ___________________________________________________________________ Name: svn:ignore - .deps Makefile Makefile.in drd-amd64-linux drd-ppc32-linux drd-ppc64-linux drd-x86-linux splash2 vgpreload_drd-amd64-linux.so vgpreload_drd-ppc32-linux.so vgpreload_drd-ppc64-linux.so vgpreload_drd-x86-linux.so + .deps Makefile Makefile.in drd-amd64-linux drd-ppc32-linux drd-ppc64-linux drd-x86-darwin drd-x86-linux splash2 vgpreload_drd-amd64-linux.so vgpreload_drd-ppc32-linux.so vgpreload_drd-ppc64-linux.so vgpreload_drd-x86-darwin.so vgpreload_drd-x86-darwin.so.dSYM vgpreload_drd-x86-linux.so Property changes on: trunk/exp-ptrcheck ___________________________________________________________________ Name: svn:ignore - .deps exp-ptrcheck-*-linux Makefile Makefile.in preen_invars vgpreload_exp-ptrcheck-*-linux.so + .deps Makefile Makefile.in exp-ptrcheck-*-linux exp-ptrcheck-x86-darwin preen_invars vgpreload_exp-ptrcheck-*-linux.so vgpreload_exp-ptrcheck-x86-darwin.so vgpreload_exp-ptrcheck-x86-darwin.so.dSYM Property changes on: trunk/helgrind ___________________________________________________________________ Name: svn:ignore - .deps helgrind-amd64-linux helgrind-ppc32-linux helgrind-ppc64-linux helgrind-x86-linux Makefile Makefile.in vgpreload_helgrind-amd64-linux.so vgpreload_helgrind-ppc32-linux.so vgpreload_helgrind-ppc64-linux.so vgpreload_helgrind-x86-linux.so + .deps Makefile Makefile.in helgrind-amd64-linux helgrind-ppc32-linux helgrind-ppc64-linux helgrind-x86-darwin helgrind-x86-linux vgpreload_helgrind-amd64-linux.so vgpreload_helgrind-ppc32-linux.so vgpreload_helgrind-ppc64-linux.so vgpreload_helgrind-x86-darwin.so vgpreload_helgrind-x86-darwin.so.dSYM vgpreload_helgrind-x86-linux.so Property changes on: trunk/lackey ___________________________________________________________________ Name: svn:ignore - .deps lackey-amd64-linux lackey-ppc32-linux lackey-ppc64-linux lackey-x86-linux Makefile Makefile.in *.so + *.so .deps Makefile Makefile.in lackey-amd64-linux lackey-ppc32-linux lackey-ppc64-linux lackey-x86-darwin lackey-x86-linux Property changes on: trunk/massif ___________________________________________________________________ Name: svn:ignore - .deps Makefile Makefile.in massif-amd64-linux massif-ppc32-linux massif-ppc64-linux massif-x86-linux ms_print *.so + *.so .deps Makefile Makefile.in massif-amd64-linux massif-ppc32-linux massif-ppc64-linux massif-x86-darwin massif-x86-linux ms_print vgpreload_massif-x86-darwin.so.dSYM Property changes on: trunk/memcheck ___________________________________________________________________ Name: svn:ignore - .deps Makefile Makefile.in memcheck-amd64-linux memcheck-ppc32-linux memcheck-ppc64-linux memcheck-x86-linux *.so + *.so .deps Makefile Makefile.in memcheck-amd64-linux memcheck-ppc32-linux memcheck-ppc64-linux memcheck-x86-darwin memcheck-x86-linux vgpreload_memcheck-x86-darwin.so.dSYM Property changes on: trunk/none ___________________________________________________________________ Name: svn:ignore - .deps Makefile Makefile.in none-amd64-linux none-ppc32-linux none-ppc64-linux none-x86-linux *.so + *.so .deps Makefile Makefile.in none-amd64-linux none-ppc32-linux none-ppc64-linux none-x86-darwin none-x86-linux |
|
From: Nicholas N. <n.n...@gm...> - 2009-06-06 21:56:36
|
On Sun, Jun 7, 2009 at 4:03 AM, Bart Van Assche<bar...@gm...> wrote: >> >> Removed: >> trunk/INSTALL > > Unfortunately this triggers an error message while generating documentation: Hopefully r10271 fixes this. Thanks for pointing it out. Nick |
|
From: <sv...@va...> - 2009-06-06 21:56:05
|
Author: njn Date: 2009-06-06 22:54:59 +0100 (Sat, 06 Jun 2009) New Revision: 10271 Log: Remove references to the now-defunct INSTALL file. Modified: trunk/callgrind/docs/index.xml trunk/docs/xml/dist-docs.xml Modified: trunk/callgrind/docs/index.xml =================================================================== --- trunk/callgrind/docs/index.xml 2009-06-06 19:22:26 UTC (rev 10270) +++ trunk/callgrind/docs/index.xml 2009-06-06 21:54:59 UTC (rev 10271) @@ -92,14 +92,6 @@ </chapter> --> -<chapter id="dist.install" xreflabel="Install"> - <title>INSTALL</title> - <literallayout> - <xi:include href="../../INSTALL" parse="text" - xmlns:xi="http://www.w3.org/2001/XInclude" /> - </literallayout> -</chapter> - <chapter id="dist.license-gpl" xreflabel=" The GNU General Public License"> <title>The GNU General Public License</title> <literallayout> Modified: trunk/docs/xml/dist-docs.xml =================================================================== --- trunk/docs/xml/dist-docs.xml 2009-06-06 19:22:26 UTC (rev 10270) +++ trunk/docs/xml/dist-docs.xml 2009-06-06 21:54:59 UTC (rev 10271) @@ -37,14 +37,6 @@ </literallayout> </chapter> - <chapter id="dist.install" xreflabel="Install"> - <title>INSTALL</title> - <literallayout> - <xi:include href="../../INSTALL" parse="text" - xmlns:xi="http://www.w3.org/2001/XInclude" /> - </literallayout> - </chapter> - <chapter id="dist.news" xreflabel="News"> <title>NEWS</title> <literallayout> |
|
From: Nicholas N. <n.n...@gm...> - 2009-06-06 21:51:19
|
On Sun, Jun 7, 2009 at 4:50 AM, Michael R Sweet<ms...@ap...> wrote:
>
> I just tried a fresh checkout, autogen.sh, configure, make, and make
> regtest and didn't get the error on this system. Perhaps there is
> something different about the nightly build path?
You can look in the old.verbose and new.verbose files for a full log
of what's happened. Maybe if you replicate exactly the commands in
those you'll be able to work out the problem. The commands used are
very similar to those above.
Or, maybe there is some environment difference between running those
by hand and running under whatever scheduling program you're using?
And if it's any use, here's what CMSG_NXTHDR looks like on my vanilla
10.5.7 system:
/* given pointer to struct cmsghdr, return pointer to next cmsghdr */
#define CMSG_NXTHDR(mhdr, cmsg) \
(((unsigned char *)(cmsg) +
__DARWIN_ALIGN((__darwin_intptr_t)(cmsg)->cmsg_len) + \
__DARWIN_ALIGN(sizeof(struct cmsghdr)) > \
(unsigned char *)(mhdr)->msg_control + (mhdr)->msg_controllen) ? \
(struct cmsghdr *)0L /* NULL */ : \
(struct cmsghdr *)((unsigned char *)(cmsg) +
__DARWIN_ALIGN((__darwin_intptr_t)(cmsg)->cmsg_len)))
Nick
|
|
From: <sv...@va...> - 2009-06-06 19:22:31
|
Author: bart
Date: 2009-06-06 20:22:26 +0100 (Sat, 06 Jun 2009)
New Revision: 10270
Log:
Merged trunk revisions 10261, 10262, 10265, 10266 and 10269.
Modified:
branches/VALGRIND_3_4_BRANCH/drd/drd_barrier.c
branches/VALGRIND_3_4_BRANCH/drd/drd_gomp_intercepts.c
branches/VALGRIND_3_4_BRANCH/drd/drd_main.c
branches/VALGRIND_3_4_BRANCH/drd/drd_mutex.c
branches/VALGRIND_3_4_BRANCH/drd/drd_rwlock.c
branches/VALGRIND_3_4_BRANCH/drd/drd_semaphore.c
branches/VALGRIND_3_4_BRANCH/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3
branches/VALGRIND_3_4_BRANCH/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b
branches/VALGRIND_3_4_BRANCH/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5
branches/VALGRIND_3_4_BRANCH/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc
branches/VALGRIND_3_4_BRANCH/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8
branches/VALGRIND_3_4_BRANCH/glibc-2.X-drd.supp
Modified: branches/VALGRIND_3_4_BRANCH/drd/drd_barrier.c
===================================================================
--- branches/VALGRIND_3_4_BRANCH/drd/drd_barrier.c 2009-06-06 18:09:09 UTC (rev 10269)
+++ branches/VALGRIND_3_4_BRANCH/drd/drd_barrier.c 2009-06-06 19:22:26 UTC (rev 10270)
@@ -388,6 +388,10 @@
VG_(OSetGen_Insert)(p->oset, q);
tl_assert(VG_(OSetGen_Lookup)(p->oset, &word_tid) == q);
}
+
+ thread_new_segment(tid);
+ s_barrier_segment_creation_count++;
+
VG_(OSetGen_ResetIter)(p->oset);
for ( ; (r = VG_(OSetGen_Next)(p->oset)) != 0; )
{
@@ -398,9 +402,6 @@
}
}
- thread_new_segment(tid);
- s_barrier_segment_creation_count++;
-
if (--p->post_waiters_left <= 0)
{
p->post_iteration = 1 - p->post_iteration;
Modified: branches/VALGRIND_3_4_BRANCH/drd/drd_gomp_intercepts.c
===================================================================
--- branches/VALGRIND_3_4_BRANCH/drd/drd_gomp_intercepts.c 2009-06-06 18:09:09 UTC (rev 10269)
+++ branches/VALGRIND_3_4_BRANCH/drd/drd_gomp_intercepts.c 2009-06-06 19:22:26 UTC (rev 10270)
@@ -59,6 +59,8 @@
// Function definitions.
+#if 0
+
GOMP_FUNC(void, gompZubarrierZuinit, // gomp_barrier_init
gomp_barrier_t* barrier, unsigned count)
{
@@ -115,3 +117,5 @@
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_BARRIER_WAIT,
barrier, gomp_barrier, 1, 0, 0);
}
+
+#endif
Modified: branches/VALGRIND_3_4_BRANCH/drd/drd_main.c
===================================================================
--- branches/VALGRIND_3_4_BRANCH/drd/drd_main.c 2009-06-06 18:09:09 UTC (rev 10269)
+++ branches/VALGRIND_3_4_BRANCH/drd/drd_main.c 2009-06-06 19:22:26 UTC (rev 10270)
@@ -646,9 +646,10 @@
{
tl_assert(IsValidDrdThreadId(drd_joiner));
tl_assert(IsValidDrdThreadId(drd_joinee));
+
+ thread_new_segment(drd_joiner);
+ thread_combine_vc(drd_joiner, drd_joinee);
thread_new_segment(drd_joinee);
- thread_combine_vc(drd_joiner, drd_joinee);
- thread_new_segment(drd_joiner);
if (s_drd_trace_fork_join)
{
Modified: branches/VALGRIND_3_4_BRANCH/drd/drd_mutex.c
===================================================================
--- branches/VALGRIND_3_4_BRANCH/drd/drd_mutex.c 2009-06-06 18:09:09 UTC (rev 10269)
+++ branches/VALGRIND_3_4_BRANCH/drd/drd_mutex.c 2009-06-06 19:22:26 UTC (rev 10270)
@@ -301,13 +301,14 @@
{
const DrdThreadId last_owner = p->owner;
+ thread_new_segment(drd_tid);
+ s_mutex_segment_creation_count++;
+
if (last_owner != drd_tid && last_owner != DRD_INVALID_THREADID)
{
tl_assert(p->last_locked_segment);
thread_combine_vc2(drd_tid, &p->last_locked_segment->vc);
}
- thread_new_segment(drd_tid);
- s_mutex_segment_creation_count++;
p->owner = drd_tid;
p->acquiry_time_ms = VG_(read_millisecond_timer)();
Modified: branches/VALGRIND_3_4_BRANCH/drd/drd_rwlock.c
===================================================================
--- branches/VALGRIND_3_4_BRANCH/drd/drd_rwlock.c 2009-06-06 18:09:09 UTC (rev 10269)
+++ branches/VALGRIND_3_4_BRANCH/drd/drd_rwlock.c 2009-06-06 19:22:26 UTC (rev 10270)
@@ -368,10 +368,10 @@
q = lookup_or_insert_node(p->thread_info, drd_tid);
if (++q->reader_nesting_count == 1)
{
- rwlock_combine_other_vc(p, drd_tid, False);
q->last_lock_was_writer_lock = False;
thread_new_segment(drd_tid);
s_rwlock_segment_creation_count++;
+ rwlock_combine_other_vc(p, drd_tid, False);
p->acquiry_time_ms = VG_(read_millisecond_timer)();
p->acquired_at = VG_(record_ExeContext)(VG_(get_running_tid)(), 0);
@@ -446,9 +446,9 @@
q->writer_nesting_count++;
q->last_lock_was_writer_lock = True;
tl_assert(q->writer_nesting_count == 1);
- rwlock_combine_other_vc(p, drd_tid, True);
thread_new_segment(drd_tid);
s_rwlock_segment_creation_count++;
+ rwlock_combine_other_vc(p, drd_tid, True);
p->acquiry_time_ms = VG_(read_millisecond_timer)();
p->acquired_at = VG_(record_ExeContext)(VG_(get_running_tid)(), 0);
}
Modified: branches/VALGRIND_3_4_BRANCH/drd/drd_semaphore.c
===================================================================
--- branches/VALGRIND_3_4_BRANCH/drd/drd_semaphore.c 2009-06-06 18:09:09 UTC (rev 10269)
+++ branches/VALGRIND_3_4_BRANCH/drd/drd_semaphore.c 2009-06-06 19:22:26 UTC (rev 10270)
@@ -227,9 +227,17 @@
p = semaphore_get_or_allocate(semaphore);
tl_assert(p);
- tl_assert((int)p->waiters >= 0);
p->waiters++;
- tl_assert(p->waiters > 0);
+
+ if ((int)p->waiters <= 0)
+ {
+ SemaphoreErrInfo sei = { semaphore };
+ VG_(maybe_record_error)(VG_(get_running_tid)(),
+ SemaphoreErr,
+ VG_(get_IP)(VG_(get_running_tid)()),
+ "Invalid semaphore",
+ &sei);
+ }
}
/** Called after sem_wait() finished.
@@ -253,13 +261,22 @@
p ? p->value : 0,
p ? p->value - 1 : 0);
}
- tl_assert(p);
- tl_assert(p->waiters > 0);
- p->waiters--;
- tl_assert((int)p->waiters >= 0);
- tl_assert((int)p->value >= 0);
- if (p->value == 0)
+
+ if (p)
{
+ p->waiters--;
+ p->value--;
+ }
+
+ /*
+ * Note: if another thread destroyed and reinitialized a semaphore while
+ * the current thread was waiting in sem_wait, p->waiters may have been
+ * set to zero by semaphore_initialize() after
+ * semaphore_pre_wait() has finished before
+ * semaphore_post_wait() has been called.
+ */
+ if (p == NULL || (int)p->value < 0 || (int)p->waiters < 0)
+ {
SemaphoreErrInfo sei = { semaphore };
VG_(maybe_record_error)(VG_(get_running_tid)(),
SemaphoreErr,
@@ -268,8 +285,7 @@
&sei);
return;
}
- p->value--;
- tl_assert((int)p->value >= 0);
+
if (p->waits_to_skip > 0)
p->waits_to_skip--;
else
@@ -278,14 +294,15 @@
tl_assert(sg);
if (sg)
{
+ thread_new_segment(tid);
+ s_semaphore_segment_creation_count++;
+
if (p->last_sem_post_tid != tid
&& p->last_sem_post_tid != DRD_INVALID_THREADID)
{
thread_combine_vc2(tid, &sg->vc);
}
sg_put(sg);
- thread_new_segment(tid);
- s_semaphore_segment_creation_count++;
}
}
}
@@ -310,11 +327,11 @@
}
p->last_sem_post_tid = tid;
- thread_new_segment(tid);
sg = 0;
thread_get_latest_segment(&sg, tid);
tl_assert(sg);
segment_push(p, sg);
+ thread_new_segment(tid);
s_semaphore_segment_creation_count++;
}
Modified: branches/VALGRIND_3_4_BRANCH/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3
===================================================================
--- branches/VALGRIND_3_4_BRANCH/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 2009-06-06 18:09:09 UTC (rev 10269)
+++ branches/VALGRIND_3_4_BRANCH/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 2009-06-06 19:22:26 UTC (rev 10270)
@@ -134,11 +134,11 @@
semaphore 0x........ was first observed at:
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
-[1/1] semaphore_post 0x........ value 0 -> 1
+[1/1] semaphore_post 0x........ value 4294967295 -> 0
FIXME: can't figure out how to verify wrap of sem_post
-[1/1] semaphore_destroy 0x........ value 1
+[1/1] semaphore_destroy 0x........ value 0
------------ dealloc of mem holding locks ------------
Modified: branches/VALGRIND_3_4_BRANCH/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b
===================================================================
--- branches/VALGRIND_3_4_BRANCH/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b 2009-06-06 18:09:09 UTC (rev 10269)
+++ branches/VALGRIND_3_4_BRANCH/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b 2009-06-06 19:22:26 UTC (rev 10270)
@@ -148,11 +148,11 @@
semaphore 0x........ was first observed at:
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
-[1/1] semaphore_post 0x........ value 0 -> 1
+[1/1] semaphore_post 0x........ value 4294967295 -> 0
FIXME: can't figure out how to verify wrap of sem_post
-[1/1] semaphore_destroy 0x........ value 1
+[1/1] semaphore_destroy 0x........ value 0
------------ dealloc of mem holding locks ------------
Modified: branches/VALGRIND_3_4_BRANCH/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5
===================================================================
--- branches/VALGRIND_3_4_BRANCH/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 2009-06-06 18:09:09 UTC (rev 10269)
+++ branches/VALGRIND_3_4_BRANCH/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 2009-06-06 19:22:26 UTC (rev 10270)
@@ -133,11 +133,11 @@
semaphore 0x........ was first observed at:
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
-[1/1] semaphore_post 0x........ value 0 -> 1
+[1/1] semaphore_post 0x........ value 4294967295 -> 0
FIXME: can't figure out how to verify wrap of sem_post
-[1/1] semaphore_destroy 0x........ value 1
+[1/1] semaphore_destroy 0x........ value 0
------------ dealloc of mem holding locks ------------
Modified: branches/VALGRIND_3_4_BRANCH/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc
===================================================================
--- branches/VALGRIND_3_4_BRANCH/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc 2009-06-06 18:09:09 UTC (rev 10269)
+++ branches/VALGRIND_3_4_BRANCH/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc 2009-06-06 19:22:26 UTC (rev 10270)
@@ -133,11 +133,11 @@
semaphore 0x........ was first observed at:
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
-[1/1] semaphore_post 0x........ value 0 -> 1
+[1/1] semaphore_post 0x........ value 4294967295 -> 0
FIXME: can't figure out how to verify wrap of sem_post
-[1/1] semaphore_destroy 0x........ value 1
+[1/1] semaphore_destroy 0x........ value 0
------------ dealloc of mem holding locks ------------
Modified: branches/VALGRIND_3_4_BRANCH/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8
===================================================================
--- branches/VALGRIND_3_4_BRANCH/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 2009-06-06 18:09:09 UTC (rev 10269)
+++ branches/VALGRIND_3_4_BRANCH/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 2009-06-06 19:22:26 UTC (rev 10270)
@@ -126,11 +126,11 @@
semaphore 0x........ was first observed at:
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
-[1/1] semaphore_post 0x........ value 0 -> 1
+[1/1] semaphore_post 0x........ value 4294967295 -> 0
FIXME: can't figure out how to verify wrap of sem_post
-[1/1] semaphore_destroy 0x........ value 1
+[1/1] semaphore_destroy 0x........ value 0
------------ dealloc of mem holding locks ------------
Modified: branches/VALGRIND_3_4_BRANCH/glibc-2.X-drd.supp
===================================================================
--- branches/VALGRIND_3_4_BRANCH/glibc-2.X-drd.supp 2009-06-06 18:09:09 UTC (rev 10269)
+++ branches/VALGRIND_3_4_BRANCH/glibc-2.X-drd.supp 2009-06-06 19:22:26 UTC (rev 10270)
@@ -262,7 +262,6 @@
gomp
drd:ConflictingAccess
obj:/usr/lib*/libgomp.so*
- obj:/usr/lib*/libgomp.so*
}
{
libX11-XCreateFontSet
|
|
From: Michael R S. <ms...@ap...> - 2009-06-06 18:50:38
|
Nicholas Nethercote wrote: > On Sat, Jun 6, 2009 at 1:56 PM, Michael R Sweet <ms...@ap...> wrote: >> Nicholas Nethercote wrote: >>>> Anyways, they should be going out now, the main issue that I saw in the >>>> first report was that one of the tests wouldn't build since <stdint.h> >>>> wasn't being included (for uint32_t). >>> Is that memcheck/tests/x86/more_x86_fp.c? Hmm, if anyone can explain, >>> I'd love to know why it compiles on my machine and not yours. >> Nope, fdleak_cmsg.c: > > Weird... the relevant macro (CMSG_NXTHDR) in sys/socket.h doesn't use > uint32_t on my system, but it does use __darwin_int_ptr_t. What OS > version are you running? This particular system is running 10.5.7 Server. I just tried a fresh checkout, autogen.sh, configure, make, and make regtest and didn't get the error on this system. Perhaps there is something different about the nightly build path? -- ______________________________________________________________________ Michael R Sweet Senior Printing System Engineer |
|
From: <ms...@ap...> - 2009-06-06 18:27:02
|
Nightly build on printing ( Darwin 9.6.0 i386 ) Started at 2009-06-06 11:19:21 PDT Ended at 2009-06-06 11:26:18 PDT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... failed Last 20 lines of verbose log follow echo gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../include -I../../coregrind -I../../include -I../../VEX/pub -DVGA_x86=1 -DVGO_darwin=1 -DVGP_x86_darwin=1 -Winline -Wall -Wshadow -g -arch i386 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT execve.o -MD -MP -MF .deps/execve.Tpo -c -o execve.o execve.c mv -f .deps/execve.Tpo .deps/execve.Po gcc -Winline -Wall -Wshadow -g -arch i386 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -o execve execve.o gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../include -I../../coregrind -I../../include -I../../VEX/pub -DVGA_x86=1 -DVGO_darwin=1 -DVGP_x86_darwin=1 -Winline -Wall -Wshadow -g -arch i386 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT faultstatus.o -MD -MP -MF .deps/faultstatus.Tpo -c -o faultstatus.o faultstatus.c mv -f .deps/faultstatus.Tpo .deps/faultstatus.Po gcc -Winline -Wall -Wshadow -g -arch i386 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -o faultstatus faultstatus.o gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../include -I../../coregrind -I../../include -I../../VEX/pub -DVGA_x86=1 -DVGO_darwin=1 -DVGP_x86_darwin=1 -Winline -Wall -Wshadow -g -arch i386 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT fcntl_setown.o -MD -MP -MF .deps/fcntl_setown.Tpo -c -o fcntl_setown.o fcntl_setown.c mv -f .deps/fcntl_setown.Tpo .deps/fcntl_setown.Po gcc -Winline -Wall -Wshadow -g -arch i386 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -o fcntl_setown fcntl_setown.o gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../include -I../../coregrind -I../../include -I../../VEX/pub -DVGA_x86=1 -DVGO_darwin=1 -DVGP_x86_darwin=1 -Winline -Wall -Wshadow -g -arch i386 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT fdleak_cmsg.o -MD -MP -MF .deps/fdleak_cmsg.Tpo -c -o fdleak_cmsg.o fdleak_cmsg.c fdleak_cmsg.c: In function 'client': fdleak_cmsg.c:139: error: 'uint32_t' undeclared (first use in this function) fdleak_cmsg.c:139: error: (Each undeclared identifier is reported only once fdleak_cmsg.c:139: error: for each function it appears in.) make[5]: *** [fdleak_cmsg.o] Error 1 make[4]: *** [check-am] Error 2 make[3]: *** [check-recursive] Error 1 make[2]: *** [check-recursive] Error 1 make[1]: *** [check-recursive] Error 1 make: *** [check] Error 2 |
|
From: <ms...@ap...> - 2009-06-06 18:19:43
|
Nightly build on printing ( Darwin 9.6.0 i386 ) Started at 2009-06-05 10:17:20 PDT Ended at 2009-06-05 10:23:49 PDT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... failed Last 20 lines of verbose log follow echo gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../include -I../../coregrind -I../../include -I../../VEX/pub -DVGA_x86=1 -DVGO_darwin=1 -DVGP_x86_darwin=1 -Winline -Wall -Wshadow -g -arch i386 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT execve.o -MD -MP -MF .deps/execve.Tpo -c -o execve.o execve.c mv -f .deps/execve.Tpo .deps/execve.Po gcc -Winline -Wall -Wshadow -g -arch i386 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -o execve execve.o gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../include -I../../coregrind -I../../include -I../../VEX/pub -DVGA_x86=1 -DVGO_darwin=1 -DVGP_x86_darwin=1 -Winline -Wall -Wshadow -g -arch i386 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT faultstatus.o -MD -MP -MF .deps/faultstatus.Tpo -c -o faultstatus.o faultstatus.c mv -f .deps/faultstatus.Tpo .deps/faultstatus.Po gcc -Winline -Wall -Wshadow -g -arch i386 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -o faultstatus faultstatus.o gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../include -I../../coregrind -I../../include -I../../VEX/pub -DVGA_x86=1 -DVGO_darwin=1 -DVGP_x86_darwin=1 -Winline -Wall -Wshadow -g -arch i386 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT fcntl_setown.o -MD -MP -MF .deps/fcntl_setown.Tpo -c -o fcntl_setown.o fcntl_setown.c mv -f .deps/fcntl_setown.Tpo .deps/fcntl_setown.Po gcc -Winline -Wall -Wshadow -g -arch i386 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -o fcntl_setown fcntl_setown.o gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../include -I../../coregrind -I../../include -I../../VEX/pub -DVGA_x86=1 -DVGO_darwin=1 -DVGP_x86_darwin=1 -Winline -Wall -Wshadow -g -arch i386 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT fdleak_cmsg.o -MD -MP -MF .deps/fdleak_cmsg.Tpo -c -o fdleak_cmsg.o fdleak_cmsg.c fdleak_cmsg.c: In function 'client': fdleak_cmsg.c:139: error: 'uint32_t' undeclared (first use in this function) fdleak_cmsg.c:139: error: (Each undeclared identifier is reported only once fdleak_cmsg.c:139: error: for each function it appears in.) make[5]: *** [fdleak_cmsg.o] Error 1 make[4]: *** [check-am] Error 2 make[3]: *** [check-recursive] Error 1 make[2]: *** [check-recursive] Error 1 make[1]: *** [check-recursive] Error 1 make: *** [check] Error 2 |
|
From: <ms...@ap...> - 2009-06-06 18:18:45
|
Nightly build on printing ( Mac OS X 10.5 ) Started at 2009-06-05 10:15:18 PDT Ended at 2009-06-05 10:15:56 PDT Results differ from 24 hours ago Checking out valgrind source tree ... failed Last 20 lines of verbose log follow echo A valgrind-new/docs/images/next.png A valgrind-new/docs/images/massif-graph-sm.png A valgrind-new/docs/images/massif-graph.png A valgrind-new/docs/images/up.png A valgrind-new/docs/images/Makefile.am A valgrind-new/docs/images/home.png A valgrind-new/docs/lib A valgrind-new/docs/lib/vg-fo.xsl A valgrind-new/docs/lib/line-wrap.xsl A valgrind-new/docs/lib/vg-html-website.xsl A valgrind-new/docs/lib/vg_basic.css A valgrind-new/docs/lib/vg-faq2txt.xsl A valgrind-new/docs/lib/vg-html-chunk.xsl A valgrind-new/docs/lib/Makefile.am A valgrind-new/docs/lib/vg-html-common.xsl A valgrind-new/docs/Makefile.am A valgrind-new/docs/README A valgrind-new/ACKNOWLEDGEMENTS A valgrind-new/helgrind svn: Caught signal ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... failed Last 20 lines of verbose log follow echo A valgrind-old/none/tests/x86/int.stderr.exp A valgrind-old/none/tests/x86/fcmovnu.stdout.exp A valgrind-old/none/tests/x86/sbbmisc.stdout.exp A valgrind-old/none/tests/x86/fcmovnu.c A valgrind-old/none/tests/x86/incdec_alt.stdout.exp A valgrind-old/none/tests/x86/insn_sse3.def A valgrind-old/none/tests/x86/movx.vgtest A valgrind-old/none/tests/x86/incdec_alt.c A valgrind-old/none/tests/x86/lahf.stderr.exp A valgrind-old/none/tests/x86/gen_insn_test.pl A valgrind-old/none/tests/x86/pushpopseg.stdout.exp A valgrind-old/none/tests/x86/bug125959-x86.vgtest A valgrind-old/none/tests/x86/pushpopseg.c A valgrind-old/none/tests/x86/insn_sse.def A valgrind-old/none/tests/x86/insn_fpu.stderr.exp A valgrind-old/none/tests/x86/lahf.vgtest A valgrind-old/none/tests/x86/insn_mmx.stderr.exp A valgrind-old/none/tests/x86/fcmovnu.vgtest A valgrind-old/none/tests/x86/bt_everything.c svn: Caught signal ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Jun 5 10:15:50 2009 --- new.short Fri Jun 5 10:15:56 2009 *************** *** 4,24 **** Last 20 lines of verbose log follow echo ! A valgrind-old/none/tests/x86/int.stderr.exp ! A valgrind-old/none/tests/x86/fcmovnu.stdout.exp ! A valgrind-old/none/tests/x86/sbbmisc.stdout.exp ! A valgrind-old/none/tests/x86/fcmovnu.c ! A valgrind-old/none/tests/x86/incdec_alt.stdout.exp ! A valgrind-old/none/tests/x86/insn_sse3.def ! A valgrind-old/none/tests/x86/movx.vgtest ! A valgrind-old/none/tests/x86/incdec_alt.c ! A valgrind-old/none/tests/x86/lahf.stderr.exp ! A valgrind-old/none/tests/x86/gen_insn_test.pl ! A valgrind-old/none/tests/x86/pushpopseg.stdout.exp ! A valgrind-old/none/tests/x86/bug125959-x86.vgtest ! A valgrind-old/none/tests/x86/pushpopseg.c ! A valgrind-old/none/tests/x86/insn_sse.def ! A valgrind-old/none/tests/x86/insn_fpu.stderr.exp ! A valgrind-old/none/tests/x86/lahf.vgtest ! A valgrind-old/none/tests/x86/insn_mmx.stderr.exp ! A valgrind-old/none/tests/x86/fcmovnu.vgtest ! A valgrind-old/none/tests/x86/bt_everything.c svn: Caught signal --- 4,24 ---- Last 20 lines of verbose log follow echo ! A valgrind-new/docs/images/next.png ! A valgrind-new/docs/images/massif-graph-sm.png ! A valgrind-new/docs/images/massif-graph.png ! A valgrind-new/docs/images/up.png ! A valgrind-new/docs/images/Makefile.am ! A valgrind-new/docs/images/home.png ! A valgrind-new/docs/lib ! A valgrind-new/docs/lib/vg-fo.xsl ! A valgrind-new/docs/lib/line-wrap.xsl ! A valgrind-new/docs/lib/vg-html-website.xsl ! A valgrind-new/docs/lib/vg_basic.css ! A valgrind-new/docs/lib/vg-faq2txt.xsl ! A valgrind-new/docs/lib/vg-html-chunk.xsl ! A valgrind-new/docs/lib/Makefile.am ! A valgrind-new/docs/lib/vg-html-common.xsl ! A valgrind-new/docs/Makefile.am ! A valgrind-new/docs/README ! A valgrind-new/ACKNOWLEDGEMENTS ! A valgrind-new/helgrind svn: Caught signal |
|
From: <sv...@va...> - 2009-06-06 18:10:00
|
Author: bart
Date: 2009-06-06 19:09:09 +0100 (Sat, 06 Jun 2009)
New Revision: 10269
Log:
Generalized a libgomp suppression pattern.
Modified:
trunk/glibc-2.X-drd.supp
Modified: trunk/glibc-2.X-drd.supp
===================================================================
--- trunk/glibc-2.X-drd.supp 2009-06-06 16:58:58 UTC (rev 10268)
+++ trunk/glibc-2.X-drd.supp 2009-06-06 18:09:09 UTC (rev 10269)
@@ -262,7 +262,6 @@
gomp
drd:ConflictingAccess
obj:/usr/lib*/libgomp.so*
- obj:/usr/lib*/libgomp.so*
}
{
libX11-XCreateFontSet
|
|
From: Bart V. A. <bar...@gm...> - 2009-06-06 18:04:34
|
On Tue, Jun 2, 2009 at 2:36 AM, <sv...@va...> wrote: > Author: njn > Date: 2009-06-02 01:36:53 +0100 (Tue, 02 Jun 2009) > New Revision: 10196 > > Log: > Remove this file, which contains generic autoconf instructions that are of > little use and partly contradict our own README. Fixes bug 194474. > > Removed: > trunk/INSTALL Unfortunately this triggers an error message while generating documentation: $ make -C docs html-docs make: Entering directory `/home/bart/software/valgrind/docs' Generating html files... export XML_CATALOG_FILES=/etc/xml/catalog && \ mkdir -p ../docs/html && \ /bin/rm -fr ../docs/html/ && \ mkdir -p ../docs/html/ && \ mkdir -p ../docs/html/images && \ cp ../docs/lib/vg_basic.css ../docs/html/ && \ cp ../docs/images/*.png ../docs/html/images && \ xsltproc --nonet --xinclude -o ../docs/html/ ../docs/lib/vg-html-chunk.xsl ../docs/xml/index.xml ../docs/xml/dist-docs.xml:44: element include: XInclude error : could not load ../INSTALL, and no fallback was found [ ... ] Bart. |
|
From: <sv...@va...> - 2009-06-06 16:59:35
|
Author: bart
Date: 2009-06-06 17:58:36 +0100 (Sat, 06 Jun 2009)
New Revision: 10267
Log:
Updated list of bugs fixed in 3.5.0.
Modified:
trunk/NEWS
Modified: trunk/NEWS
===================================================================
--- trunk/NEWS 2009-06-06 12:28:20 UTC (rev 10266)
+++ trunk/NEWS 2009-06-06 16:58:36 UTC (rev 10267)
@@ -114,9 +114,10 @@
in r10191).
n-i-bz DRD - fixed a memory leak triggered by vector clock deallocation
(fixed in r10228).
+195169 DRD - added support for newer versions of gcc's OpenMP runtime (libgomp)
+ (fixed in r10261).
-
Release 3.4.1 (28 February 2009)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.4.1 is a bug-fix release that fixes some regressions and assertion
|
|
From: <sv...@va...> - 2009-06-06 16:59:02
|
Author: bart
Date: 2009-06-06 17:58:58 +0100 (Sat, 06 Jun 2009)
New Revision: 10268
Log:
Updated test plan.
Modified:
trunk/drd/Testing.txt
Modified: trunk/drd/Testing.txt
===================================================================
--- trunk/drd/Testing.txt 2009-06-06 16:58:36 UTC (rev 10267)
+++ trunk/drd/Testing.txt 2009-06-06 16:58:58 UTC (rev 10268)
@@ -67,6 +67,8 @@
cvs -d :pserver:ano...@cv...:/GraphicsMagick co GraphicsMagick
cd GraphicsMagick
./configure --prefix=$HOME/GraphicsMagick-cvs
+ vi Makefile # Add --check-stack-var=yes and --var-info=yes to the
+ # drd: target.
export OMP_NUM_THREADS=4
make -s drd
|
|
From: <sv...@va...> - 2009-06-06 13:06:05
|
Author: bart
Date: 2009-06-06 13:26:05 +0100 (Sat, 06 Jun 2009)
New Revision: 10265
Log:
Consistency improvement: made sure that for all synchronization operations vector clocks are combined after having created a new segment instead of before.
Modified:
trunk/drd/drd_barrier.c
trunk/drd/drd_mutex.c
trunk/drd/drd_rwlock.c
trunk/drd/drd_thread.c
Modified: trunk/drd/drd_barrier.c
===================================================================
--- trunk/drd/drd_barrier.c 2009-06-06 11:41:43 UTC (rev 10264)
+++ trunk/drd/drd_barrier.c 2009-06-06 12:26:05 UTC (rev 10265)
@@ -456,6 +456,12 @@
VG_(OSetGen_Insert)(p->oset, q);
tl_assert(VG_(OSetGen_Lookup)(p->oset, &word_tid) == q);
}
+
+ /* Create a new segment and store a pointer to that segment. */
+ DRD_(thread_new_segment)(tid);
+ DRD_(thread_get_latest_segment)(&q->post_wait_sg, tid);
+ s_barrier_segment_creation_count++;
+
/*
* Combine all vector clocks that were stored in the pre_barrier_wait
* wrapper with the vector clock of the current thread.
@@ -470,11 +476,6 @@
}
}
- /* Create a new segment and store a pointer to that segment. */
- DRD_(thread_new_segment)(tid);
- DRD_(thread_get_latest_segment)(&q->post_wait_sg, tid);
- s_barrier_segment_creation_count++;
-
/*
* If the same number of threads as the barrier count indicates have
* called the post *_barrier_wait() wrapper, toggle p->post_iteration and
Modified: trunk/drd/drd_mutex.c
===================================================================
--- trunk/drd/drd_mutex.c 2009-06-06 11:41:43 UTC (rev 10264)
+++ trunk/drd/drd_mutex.c 2009-06-06 12:26:05 UTC (rev 10265)
@@ -308,13 +308,14 @@
{
const DrdThreadId last_owner = p->owner;
+ DRD_(thread_new_segment)(drd_tid);
+ s_mutex_segment_creation_count++;
+
if (last_owner != drd_tid && last_owner != DRD_INVALID_THREADID)
{
tl_assert(p->last_locked_segment);
DRD_(thread_combine_vc2)(drd_tid, &p->last_locked_segment->vc);
}
- DRD_(thread_new_segment)(drd_tid);
- s_mutex_segment_creation_count++;
p->owner = drd_tid;
p->acquiry_time_ms = VG_(read_millisecond_timer)();
Modified: trunk/drd/drd_rwlock.c
===================================================================
--- trunk/drd/drd_rwlock.c 2009-06-06 11:41:43 UTC (rev 10264)
+++ trunk/drd/drd_rwlock.c 2009-06-06 12:26:05 UTC (rev 10265)
@@ -381,10 +381,10 @@
q = DRD_(lookup_or_insert_node)(p->thread_info, drd_tid);
if (++q->reader_nesting_count == 1)
{
- DRD_(rwlock_combine_other_vc)(p, drd_tid, False);
q->last_lock_was_writer_lock = False;
DRD_(thread_new_segment)(drd_tid);
DRD_(s_rwlock_segment_creation_count)++;
+ DRD_(rwlock_combine_other_vc)(p, drd_tid, False);
p->acquiry_time_ms = VG_(read_millisecond_timer)();
p->acquired_at = VG_(record_ExeContext)(VG_(get_running_tid)(), 0);
@@ -462,9 +462,9 @@
q->writer_nesting_count++;
q->last_lock_was_writer_lock = True;
tl_assert(q->writer_nesting_count == 1);
- DRD_(rwlock_combine_other_vc)(p, drd_tid, True);
DRD_(thread_new_segment)(drd_tid);
DRD_(s_rwlock_segment_creation_count)++;
+ DRD_(rwlock_combine_other_vc)(p, drd_tid, True);
p->acquiry_time_ms = VG_(read_millisecond_timer)();
p->acquired_at = VG_(record_ExeContext)(VG_(get_running_tid)(), 0);
}
Modified: trunk/drd/drd_thread.c
===================================================================
--- trunk/drd/drd_thread.c 2009-06-06 11:41:43 UTC (rev 10264)
+++ trunk/drd/drd_thread.c 2009-06-06 12:26:05 UTC (rev 10265)
@@ -297,9 +297,10 @@
{
tl_assert(DRD_(IsValidDrdThreadId)(drd_joiner));
tl_assert(DRD_(IsValidDrdThreadId)(drd_joinee));
+
+ DRD_(thread_new_segment)(drd_joiner);
+ DRD_(thread_combine_vc)(drd_joiner, drd_joinee);
DRD_(thread_new_segment)(drd_joinee);
- DRD_(thread_combine_vc)(drd_joiner, drd_joinee);
- DRD_(thread_new_segment)(drd_joiner);
if (s_trace_fork_join)
{
|
|
From: <sv...@va...> - 2009-06-06 12:46:38
|
Author: bart
Date: 2009-06-06 13:28:20 +0100 (Sat, 06 Jun 2009)
New Revision: 10266
Log:
Robustness improvement: print an error message instead of triggering an assertion failure upon semaphore reinitialization during sem_wait().
Modified:
trunk/drd/drd_semaphore.c
Modified: trunk/drd/drd_semaphore.c
===================================================================
--- trunk/drd/drd_semaphore.c 2009-06-06 12:26:05 UTC (rev 10265)
+++ trunk/drd/drd_semaphore.c 2009-06-06 12:28:20 UTC (rev 10266)
@@ -247,9 +247,17 @@
p = DRD_(semaphore_get_or_allocate)(semaphore);
tl_assert(p);
- tl_assert((int)p->waiters >= 0);
p->waiters++;
- tl_assert(p->waiters > 0);
+
+ if ((int)p->waiters <= 0)
+ {
+ SemaphoreErrInfo sei = { DRD_(thread_get_running_tid)(), semaphore };
+ VG_(maybe_record_error)(VG_(get_running_tid)(),
+ SemaphoreErr,
+ VG_(get_IP)(VG_(get_running_tid)()),
+ "Invalid semaphore",
+ &sei);
+ }
}
/**
|
|
From: <sv...@va...> - 2009-06-06 11:42:06
|
Author: bart
Date: 2009-06-06 12:41:43 +0100 (Sat, 06 Jun 2009)
New Revision: 10264
Log:
Updated vector clock filter.
Modified:
branches/DRDDEV/drd/tests/annotate_trace_memory.stderr.exp
branches/DRDDEV/drd/tests/filter_stderr
Modified: branches/DRDDEV/drd/tests/annotate_trace_memory.stderr.exp
===================================================================
--- branches/DRDDEV/drd/tests/annotate_trace_memory.stderr.exp 2009-06-06 11:27:58 UTC (rev 10263)
+++ branches/DRDDEV/drd/tests/annotate_trace_memory.stderr.exp 2009-06-06 11:41:43 UTC (rev 10264)
@@ -1,17 +1,17 @@
FLAGS [phb=1, fm=0]
test01: positive
-store 0x........ size 4 (vg 2 / drd 2 / vc [ 1: 5, 2: 1 ])
+store 0x........ size 4 (vg 2 / drd 2 / vc ...)
at 0x........: test01::Worker() (tsan_unittest.cpp:?)
by 0x........: MyThread::ThreadBody(MyThread*) (tsan_thread_wrappers_pthread.h:?)
-store 0x........ size 4 (vg 1 / drd 1 / vc [ 1: 7 ])
+store 0x........ size 4 (vg 1 / drd 1 / vc ...)
at 0x........: test01::Parent() (tsan_unittest.cpp:?)
by 0x........: test01::Run() (tsan_unittest.cpp:?)
Conflicting store by thread x/x at 0x........ size 4
at 0x........: test01::Parent() (tsan_unittest.cpp:?)
by 0x........: test01::Run() (tsan_unittest.cpp:?)
Allocation context: BSS section of tsan_unittest
-load 0x........ size 4 (vg 1 / drd 1 / vc [ 1: 8, 2: 2 ])
+load 0x........ size 4 (vg 1 / drd 1 / vc ...)
at 0x........: test01::Run() (tsan_unittest.cpp:?)
by 0x........: main (tsan_unittest.cpp:?)
GLOB=2
Modified: branches/DRDDEV/drd/tests/filter_stderr
===================================================================
--- branches/DRDDEV/drd/tests/filter_stderr 2009-06-06 11:27:58 UTC (rev 10263)
+++ branches/DRDDEV/drd/tests/filter_stderr 2009-06-06 11:41:43 UTC (rev 10264)
@@ -21,7 +21,7 @@
-e "s:(within /lib[0-9]*/ld-[0-9.]*\.so):(within ld-?.?.so):" \
-e "s/was held during [0-9][0-9]*/was held during .../" \
-e "s: BSS section of .*/: BSS section of :g" \
--e "s: vc \[[ ,0-9]*\]: vc ...:g" \
+-e "s: vc \[[ ,:0-9]*\]: vc ...:g" \
-e "s/ (\([a-zA-Z_]*\.c\):[0-9]*)/ (\1:?)/" \
-e "s/ (\([a-zA-Z_]*\.h\):[0-9]*)/ (\1:?)/" \
-e "s/ (\([a-zA-Z_]*\.cpp\):[0-9]*)/ (\1:?)/" |
|
Author: bart Date: 2009-06-06 12:27:58 +0100 (Sat, 06 Jun 2009) New Revision: 10263 Log: svn merge -r10225:10262 svn://svn.valgrind.org/valgrind/trunk . Removed: branches/DRDDEV/exp-omega/ Modified: branches/DRDDEV/ACKNOWLEDGEMENTS branches/DRDDEV/AUTHORS branches/DRDDEV/Makefile.am branches/DRDDEV/NEWS branches/DRDDEV/README_PACKAGERS branches/DRDDEV/configure.in branches/DRDDEV/coregrind/m_aspacemgr/aspacemgr-linux.c branches/DRDDEV/coregrind/m_syswrap/priv_syswrap-darwin.h branches/DRDDEV/coregrind/m_syswrap/syswrap-darwin.c branches/DRDDEV/coregrind/m_syswrap/syswrap-main.c branches/DRDDEV/coregrind/m_syswrap/syswrap-x86-linux.c branches/DRDDEV/drd/Testing.txt branches/DRDDEV/drd/drd.h branches/DRDDEV/drd/drd_malloc_wrappers.h branches/DRDDEV/drd/drd_semaphore.c branches/DRDDEV/drd/scripts/download-and-build-gcc branches/DRDDEV/drd/tests/Makefile.am branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 branches/DRDDEV/drd/tests/tsan_unittest.cpp branches/DRDDEV/exp-ptrcheck/h_main.c branches/DRDDEV/include/vki/vki-scnums-darwin.h branches/DRDDEV/nightly/README.txt branches/DRDDEV/nightly/bin/nightly branches/DRDDEV/nightly/conf/georgia-tech-cellbuzz-cross.conf Modified: branches/DRDDEV/ACKNOWLEDGEMENTS =================================================================== --- branches/DRDDEV/ACKNOWLEDGEMENTS 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/ACKNOWLEDGEMENTS 2009-06-06 11:27:58 UTC (rev 10263) @@ -52,7 +52,6 @@ Josef wrote Callgrind and the associated KCachegrind GUI. -Omega was written by Bryan Meredith and is maintained by Rich Coe. DRD was written by and is maintained by Bart Van Assche. Frederic Gobry helped with autoconf and automake. Daniel Berlin Modified: branches/DRDDEV/AUTHORS =================================================================== --- branches/DRDDEV/AUTHORS 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/AUTHORS 2009-06-06 11:27:58 UTC (rev 10263) @@ -38,7 +38,6 @@ Michael Matz and Simon Hausmann modified the GNU binutils demangler(s) for use in Valgrind. -Omega was written by Bryan Meredith and is maintained by Rich Coe. DRD was written by and is maintained by Bart Van Assche. And lots and lots of other people sent bug reports, patches, and very Modified: branches/DRDDEV/Makefile.am =================================================================== --- branches/DRDDEV/Makefile.am 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/Makefile.am 2009-06-06 11:27:58 UTC (rev 10263) @@ -12,8 +12,7 @@ helgrind \ drd -EXP_TOOLS = exp-omega \ - exp-ptrcheck +EXP_TOOLS = exp-ptrcheck # DDD: once all tools work on Darwin, TEST_TOOLS and TEST_EXP_TOOLS can be # replaced with TOOLS and EXP_TOOLS. @@ -28,7 +27,7 @@ lackey \ none - TEST_EXP_TOOLS = exp-omega + TEST_EXP_TOOLS = endif # Put docs last because building the HTML is slow and we want to get Modified: branches/DRDDEV/NEWS =================================================================== --- branches/DRDDEV/NEWS 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/NEWS 2009-06-06 11:27:58 UTC (rev 10263) @@ -1,14 +1,17 @@ Release 3.5.0 (???) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -* XXX: Mac OS X support - - x86/Darwin. - - probably amd64/Darwin. - - Requires Mac OS X 10.5 Leopard or later. - - No support for Mac OS X on PowerPC machines. - - Many thanks to Greg Parker for developing this port over several years. +* Mac OS X is now supported. (Note that Mac OS X is often called "Darwin" + because that is the name of the OS core.) - Things that don't work + Supported machines: + - x86 machines are supported fairly well. + - AMD64 (a.k.a. x86-64) are supported, but not as well. + - Older PowerPC machines are not supported. + - It requires Mac OS X 10.5 Leopard or later. Porting to 10.4 is not + planned because it would require work and 10.4 is only becoming less common. + + Things that don't work: - Objective-C garbage collection - --db-attach=yes - Messages like the following indicate a mismatch between Valgrind's @@ -16,7 +19,15 @@ multithreaded programs. If the failure repeats for the same address range, then there may be a problem causing false errors or crashes. sync check at ...: FAILED + - If you have Rogue Amoeba's "Instant Hijack" program installed, Valgrind + will fail with a SIGTRAP at start-up. This is apparently Instant + Hijack's fault. See https://bugs.kde.org/show_bug.cgi?id=193917 for + details and a simple work-around. + Many thanks to Greg Parker for developing this port over several years. + +* XXX: something about improved Wine support? + * A new Memcheck client request VALGRIND_COUNT_LEAK_BLOCKS has been added. It is similar to VALGRIND_COUNT_LEAKS but counts blocks instead of bytes. [XXX: consider adding VALGRIND_COUNT_LEAK_BYTES as a synonym and @@ -54,6 +65,8 @@ Stack traces produced when --xml=yes is specified are different and unchanged. +* XXX: XML output has changed... + * The graphs drawn by Massif's ms_print program have changed slightly: - The half-height chars '.' and ',' are no longer drawn, because they are confusing. The --y option can be used if the default y-resolution is @@ -62,6 +75,12 @@ gap until the next snapshot. This makes it clear that the memory usage has not dropped to zero between snapshots. +* exp-Omega, an experimental instantaneous leak-detecting tool, was disabled + in 3.4.0 due to a lack of interest and maintenance, although the source + code was still in the distribution. The source code has now been removed + from the distribution. For anyone interested, the removal occurred in SVN + revision r10247. + * The location of some install files has changed. This should not affect most users. Those who might be affected: - For people who use Valgrind with MPI programs, the installed @@ -88,6 +107,13 @@ 189763 DRD - pthread_create@GLIBC_2.0() no longer triggers an assertion failure. n-i-bz DRD - fixed assertion failure triggered by mutex reinitialization. + Note: DRD did report the mutex reinitialization before reporting the + assertion failure. +n-i-bz DRD - fixed a bug that caused incorrect messages to be printed about + memory allocation events with memory access tracing enabled (fixed + in r10191). +n-i-bz DRD - fixed a memory leak triggered by vector clock deallocation + (fixed in r10228). Modified: branches/DRDDEV/README_PACKAGERS =================================================================== --- branches/DRDDEV/README_PACKAGERS 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/README_PACKAGERS 2009-06-06 11:27:58 UTC (rev 10263) @@ -78,7 +78,7 @@ -- Don't strip symbols from lib/valgrind/$platform/{cachegrind, - callgrind,drd,exp-omega,helgrind,lackey,massif,memcheck,none} + callgrind,drd,helgrind,lackey,massif,memcheck,none} in the installation tree. Doing so will likely cause problems. Removing the line number info is probably OK, although that has not been tested by the Valgrind developers. Modified: branches/DRDDEV/configure.in =================================================================== --- branches/DRDDEV/configure.in 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/configure.in 2009-06-06 11:27:58 UTC (rev 10263) @@ -1233,29 +1233,6 @@ fi -# does this compiler support -Wno-empty-body ? - -AC_MSG_CHECKING([if gcc accepts -Wno-empty-body]) - -safe_CFLAGS=$CFLAGS -CFLAGS="-Wno-empty-body" - -AC_TRY_COMPILE( -[ ], -[ - return 0; -], -[ -AC_SUBST([FLAG_W_NO_EMPTY_BODY], [-Wno-empty-body]) -AC_MSG_RESULT([yes]) -], -[ -AC_SUBST([FLAG_W_NO_EMPTY_BODY], []) -AC_MSG_RESULT([no]) -]) -CFLAGS=$safe_CFLAGS - - # does this compiler support -Wno-format-zero-length ? AC_MSG_CHECKING([if gcc accepts -Wno-format-zero-length]) @@ -1916,9 +1893,6 @@ none/tests/darwin/Makefile none/tests/x86-linux/Makefile none/docs/Makefile - exp-omega/Makefile - exp-omega/tests/Makefile - exp-omega/docs/Makefile exp-ptrcheck/Makefile exp-ptrcheck/tests/Makefile exp-ptrcheck/docs/Makefile Modified: branches/DRDDEV/coregrind/m_aspacemgr/aspacemgr-linux.c =================================================================== --- branches/DRDDEV/coregrind/m_aspacemgr/aspacemgr-linux.c 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/coregrind/m_aspacemgr/aspacemgr-linux.c 2009-06-06 11:27:58 UTC (rev 10263) @@ -3374,6 +3374,8 @@ else if (nsegments[i].kind == SkFree || nsegments[i].kind == SkResvn) { /* Add mapping for SkResvn regions */ ChangedSeg* cs = &css_local[css_used_local]; + // If this assert fails, the css_size arg passed to + // VG_(get_changed_segments) needs to be increased. aspacem_assert(css_used_local < css_size_local); cs->is_added = True; cs->start = addr; @@ -3433,8 +3435,9 @@ if (nsegments[i].kind != SkFree && nsegments[i].kind != SkResvn) { // V has a mapping, kernel doesn't ChangedSeg* cs = &css_local[css_used_local]; + // If this assert fails, the css_size arg passed to + // VG_(get_changed_segments) needs to be increased. aspacem_assert(css_used_local < css_size_local); - cs->is_added = True; cs->is_added = False; cs->start = nsegments[i].start; cs->end = nsegments[i].end; Modified: branches/DRDDEV/coregrind/m_syswrap/priv_syswrap-darwin.h =================================================================== --- branches/DRDDEV/coregrind/m_syswrap/priv_syswrap-darwin.h 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/coregrind/m_syswrap/priv_syswrap-darwin.h 2009-06-06 11:27:58 UTC (rev 10263) @@ -241,7 +241,7 @@ DECL_TEMPLATE(darwin, swtch_pri); // Machine-dependent traps -DECL_TEMPLATE(darwin, pthread_set_self); +DECL_TEMPLATE(darwin, thread_fast_set_cthread_self); // syswrap-<arch>-darwin.c #include <mach/mach.h> Modified: branches/DRDDEV/coregrind/m_syswrap/syswrap-darwin.c =================================================================== --- branches/DRDDEV/coregrind/m_syswrap/syswrap-darwin.c 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/coregrind/m_syswrap/syswrap-darwin.c 2009-06-06 11:27:58 UTC (rev 10263) @@ -592,10 +592,13 @@ static void sync_mappings(const HChar *when, const HChar *where, Int num) { - // I haven't seen more than 1 segment be added or removed in a single calls - // to sync_mappings(). So 20 seems generous. The upper bound is the - // number of segments currently in use. --njn - #define CSS_SIZE 20 + // Usually the number of segments added/removed in a single calls is very + // small e.g. 1. But the limit was 20 at one point, and that wasn't enough + // for at least one invocation of Firefox. If we need to go much bigger, + // should probably make VG_(get_changed_segments) fail if the size isn't + // big enough, and repeatedly redo it with progressively bigger dynamically + // allocated buffers until it succeeds. + #define CSS_SIZE 100 ChangedSeg css[CSS_SIZE]; Int css_used; Int i; @@ -6873,13 +6876,12 @@ } #endif -PRE(pthread_set_self) +PRE(thread_fast_set_cthread_self) { - PRINT("pthread_set_self ( %#lx )", ARG1); - PRE_REG_READ1(void, "pthread_set_self", struct pthread_t *, self); + PRINT("thread_fast_set_cthread_self ( %#lx )", ARG1); + PRE_REG_READ1(void, "thread_fast_set_cthread_self", struct pthread_t *, self); #if defined(VGA_x86) - // GrP fixme hack this isn't really pthread_set_self // Point the USER_CTHREAD ldt entry (slot 6, reg 0x37) at this pthread { VexGuestX86SegDescr *ldt; @@ -6912,7 +6914,7 @@ // and use that to set the syscall return status. SET_STATUS_from_SysRes( VG_(mk_SysRes_x86_darwin)( - VG_DARWIN_SYSNO_CLASS(__NR_pthread_set_self), + VG_DARWIN_SYSNO_CLASS(__NR_thread_fast_set_cthread_self), False, 0, 0x37 ) ); @@ -6928,7 +6930,7 @@ // see comments on x86 case just above SET_STATUS_from_SysRes( VG_(mk_SysRes_amd64_darwin)( - VG_DARWIN_SYSNO_CLASS(__NR_pthread_set_self), + VG_DARWIN_SYSNO_CLASS(__NR_thread_fast_set_cthread_self), False, 0, 0x60 ) ); @@ -7524,11 +7526,11 @@ #if defined(VGA_x86) const SyscallTableEntry ML_(mdep_trap_table)[] = { - MACX_(__NR_pthread_set_self, pthread_set_self), + MACX_(__NR_thread_fast_set_cthread_self, thread_fast_set_cthread_self), }; #elif defined(VGA_amd64) const SyscallTableEntry ML_(mdep_trap_table)[] = { - MACX_(__NR_pthread_set_self, pthread_set_self), + MACX_(__NR_thread_fast_set_cthread_self, thread_fast_set_cthread_self), }; #else #error unknown architecture Modified: branches/DRDDEV/coregrind/m_syswrap/syswrap-main.c =================================================================== --- branches/DRDDEV/coregrind/m_syswrap/syswrap-main.c 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/coregrind/m_syswrap/syswrap-main.c 2009-06-06 11:27:58 UTC (rev 10263) @@ -1622,9 +1622,9 @@ when they really should call SET_STATUS_from_SysRes. The former create a UNIX-class syscall result on Darwin, which may not be correct for the syscall; if that's the case then this assertion - fires. See PRE(pthread_set_self) for an example. On non-Darwin - platforms this assertion is should never fail, and this comment - is completely irrelevant. */ + fires. See PRE(thread_fast_set_cthread_self) for an example. On + non-Darwin platforms this assertion is should never fail, and this + comment is completely irrelevant. */ /* Ok, looks sane */ /* Get the system call number. Because the pre-handler isn't Modified: branches/DRDDEV/coregrind/m_syswrap/syswrap-x86-linux.c =================================================================== --- branches/DRDDEV/coregrind/m_syswrap/syswrap-x86-linux.c 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/coregrind/m_syswrap/syswrap-x86-linux.c 2009-06-06 11:27:58 UTC (rev 10263) @@ -647,8 +647,11 @@ idx = info->entry_number; if (idx == -1) { - /* Find and use the first free entry. */ - for (idx = 0; idx < VEX_GUEST_X86_GDT_NENT; idx++) { + /* Find and use the first free entry. Don't allocate entry + zero, because the hardware will never do that, and apparently + doing so confuses some code (perhaps stuff running on + Wine). */ + for (idx = 1; idx < VEX_GUEST_X86_GDT_NENT; idx++) { if (gdt[idx].LdtEnt.Words.word1 == 0 && gdt[idx].LdtEnt.Words.word2 == 0) break; @@ -656,7 +659,8 @@ if (idx == VEX_GUEST_X86_GDT_NENT) return VG_(mk_SysRes_Error)( VKI_ESRCH ); - } else if (idx < 0 || idx >= VEX_GUEST_X86_GDT_NENT) { + } else if (idx < 0 || idx == 0 || idx >= VEX_GUEST_X86_GDT_NENT) { + /* Similarly, reject attempts to use GDT[0]. */ return VG_(mk_SysRes_Error)( VKI_EINVAL ); } Modified: branches/DRDDEV/drd/Testing.txt =================================================================== --- branches/DRDDEV/drd/Testing.txt 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/drd/Testing.txt 2009-06-06 11:27:58 UTC (rev 10263) @@ -32,11 +32,8 @@ 6. Run the regression tests as follows: perl tests/vg_regtest drd -7. Run Konstantin's regression tests: - mkdir -p drt/unittest - svn checkout http://data-race-test.googlecode.com/svn/trunk/unittest drt/unittest - make -C drt/unittest -s all - ./vg-in-place --tool=drd --check-stack-var=yes drt/unittest/racecheck_unittest 2>&1|less +7. Run the regression tests that were developed for Thread Sanitizer: + ./vg-in-place --tool=drd --check-stack-var=yes drt/test/tsan_unittest 2>&1|less 8. Test the slowdown for matinv for various matrix sizes via the script drd/scripts/run-matinv (must be about 24 for i == 1 and about @@ -55,7 +52,25 @@ having closed the GNOME terminal window: ./vg-in-place --tool=drd --var-info=yes --trace-children=yes gnome-terminal -11. Test DRD with Firefox. First of all, make sure that Valgrind is patched +11. Rerun the GraphicsMagick test suite: + 1. Recompile gcc via drd/scripts/download-and-build-gcc. + 2. Replace the distro-provided libgomp.so* by the newly compiled versions: + cp $HOME/gcc-.../lib/libgomp.so.1.0.0.0 /usr/lib + cp $HOME/gcc-.../lib64/libgomp.so.1.0.0.0 /usr/lib64 + rpm --verify libgomp43-32bit + rpm --verify libgomp43 + 3. Build and install Valgrind in /usr: + ./autogen.sh && ./configure --prefix=/usr CC=$HOME/gcc-4.4.0/bin/gcc \ + && make -s && make -s install + 4. Download the GraphicsMagick source code: + cvs -d :pserver:ano...@cv...:/GraphicsMagick login + cvs -d :pserver:ano...@cv...:/GraphicsMagick co GraphicsMagick + cd GraphicsMagick + ./configure --prefix=$HOME/GraphicsMagick-cvs + export OMP_NUM_THREADS=4 + make -s drd + +12. Test DRD with Firefox. First of all, make sure that Valgrind is patched such that it supports libjemalloc.so: drd/scripts/add-libjemalloc-support Next, build and install Firefox 3: Modified: branches/DRDDEV/drd/drd.h =================================================================== --- branches/DRDDEV/drd/drd.h 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/drd/drd.h 2009-06-06 11:27:58 UTC (rev 10263) @@ -174,16 +174,29 @@ #define ANNOTATE_RWLOCK_RELEASED(rwlock, is_w) \ DRDCL_(annotate_rwlock)(rwlock, 3, is_w) -/** @todo Implement this annotation. */ +/** + * Tell DRD that a FIFO queue has been created. The abbreviation PCQ stands for + * <em>producer-consumer</em>. + */ #define ANNOTATE_PCQ_CREATE(pcq) do { } while(0) -/** @todo Implement this annotation. */ +/** Tell DRD that a FIFO queue has been destroyed. */ #define ANNOTATE_PCQ_DESTROY(pcq) do { } while(0) -/** @todo Implement this annotation. */ +/** + * Tell DRD that an element has been added to the FIFO queue at address pcq. + */ #define ANNOTATE_PCQ_PUT(pcq) do { } while(0) -/** @todo Implement this annotation. */ +/** + * Tell DRD that an element has been removed from the FIFO queue at address pcq, + * and that DRD should insert a happens-before relationship between the memory + * accesses that occurred before the corresponding ANNOTATE_PCQ_PUT(pcq) + * annotation and the memory accesses after this annotation. Correspondence + * between PUT and GET annotations happens in FIFO order. Since locking + * of the queue is needed anyway to add elements to or to remove elements from + * the queue, for DRD all four FIFO annotations are defined as no-ops. + */ #define ANNOTATE_PCQ_GET(pcq) do { } while(0) /** Modified: branches/DRDDEV/drd/drd_malloc_wrappers.h =================================================================== --- branches/DRDDEV/drd/drd_malloc_wrappers.h 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/drd/drd_malloc_wrappers.h 2009-06-06 11:27:58 UTC (rev 10263) @@ -31,8 +31,8 @@ #include "pub_tool_execontext.h" /* ExeContext */ -typedef void (*StartUsingMem)(const Addr a1, const Addr a2, UInt ec_uniq); -typedef void (*StopUsingMem)(const Addr a1, const Addr a2); +typedef void (*StartUsingMem)(const Addr a1, const SizeT len, UInt ec_uniq); +typedef void (*StopUsingMem)(const Addr a1, const SizeT len); void DRD_(register_malloc_wrappers)(const StartUsingMem start_callback, Modified: branches/DRDDEV/drd/drd_semaphore.c =================================================================== --- branches/DRDDEV/drd/drd_semaphore.c 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/drd/drd_semaphore.c 2009-06-06 11:27:58 UTC (rev 10263) @@ -274,13 +274,22 @@ p ? p->value : 0, p ? p->value - 1 : 0); } - tl_assert(p); - tl_assert(p->waiters > 0); - p->waiters--; - tl_assert((int)p->waiters >= 0); - tl_assert((int)p->value >= 0); - if (p->value == 0) + + if (p) { + p->waiters--; + p->value--; + } + + /* + * Note: if another thread destroyed and reinitialized a semaphore while + * the current thread was waiting in sem_wait, p->waiters may have been + * set to zero by DRD_(semaphore_initialize)() after + * DRD_(semaphore_pre_wait)() has finished before + * DRD_(semaphore_post_wait)() has been called. + */ + if (p == NULL || (int)p->value < 0 || (int)p->waiters < 0) + { SemaphoreErrInfo sei = { DRD_(thread_get_running_tid)(), semaphore }; VG_(maybe_record_error)(VG_(get_running_tid)(), SemaphoreErr, @@ -289,8 +298,7 @@ &sei); return; } - p->value--; - tl_assert((int)p->value >= 0); + if (p->waits_to_skip > 0) p->waits_to_skip--; else Modified: branches/DRDDEV/drd/scripts/download-and-build-gcc =================================================================== --- branches/DRDDEV/drd/scripts/download-and-build-gcc 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/drd/scripts/download-and-build-gcc 2009-06-06 11:27:58 UTC (rev 10263) @@ -6,7 +6,7 @@ # are called gmp-devel and mpfr-devel. -GCC_VERSION=4.3.2 +GCC_VERSION=4.4.0 FSF_MIRROR=ftp://ftp.easynet.be/gnu SRCDIR=$HOME/software DOWNLOADS=$SRCDIR/downloads Modified: branches/DRDDEV/drd/tests/Makefile.am =================================================================== --- branches/DRDDEV/drd/tests/Makefile.am 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/drd/tests/Makefile.am 2009-06-06 11:27:58 UTC (rev 10263) @@ -291,8 +291,7 @@ tsan_unittest_SOURCES = tsan_unittest.cpp tsan_unittest_CXXFLAGS = $(AM_CXXFLAGS) \ - -DTHREAD_WRAPPERS='"tsan_thread_wrappers_pthread.h"' \ - -Wno-sign-compare -Wno-shadow @FLAG_W_NO_EMPTY_BODY@ + -DTHREAD_WRAPPERS='"tsan_thread_wrappers_pthread.h"' unit_bitmap_CFLAGS = $(AM_CFLAGS) -O2 \ -DENABLE_DRD_CONSISTENCY_CHECKS \ Modified: branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 =================================================================== --- branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 2009-06-06 11:27:58 UTC (rev 10263) @@ -137,11 +137,11 @@ semaphore 0x........ was first observed at: at 0x........: sem_init* (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:228) -[1/1] semaphore_post 0x........ value 0 -> 1 +[1/1] semaphore_post 0x........ value 4294967295 -> 0 FIXME: can't figure out how to verify wrap of sem_post -[1/1] semaphore_destroy 0x........ value 1 +[1/1] semaphore_destroy 0x........ value 0 ------------ dealloc of mem holding locks ------------ Modified: branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b =================================================================== --- branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b 2009-06-06 11:27:58 UTC (rev 10263) @@ -148,11 +148,11 @@ semaphore 0x........ was first observed at: at 0x........: sem_init* (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:228) -[1/1] semaphore_post 0x........ value 0 -> 1 +[1/1] semaphore_post 0x........ value 4294967295 -> 0 FIXME: can't figure out how to verify wrap of sem_post -[1/1] semaphore_destroy 0x........ value 1 +[1/1] semaphore_destroy 0x........ value 0 ------------ dealloc of mem holding locks ------------ Modified: branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 =================================================================== --- branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 2009-06-06 11:27:58 UTC (rev 10263) @@ -136,11 +136,11 @@ semaphore 0x........ was first observed at: at 0x........: sem_init* (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:228) -[1/1] semaphore_post 0x........ value 0 -> 1 +[1/1] semaphore_post 0x........ value 4294967295 -> 0 FIXME: can't figure out how to verify wrap of sem_post -[1/1] semaphore_destroy 0x........ value 1 +[1/1] semaphore_destroy 0x........ value 0 ------------ dealloc of mem holding locks ------------ Modified: branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc =================================================================== --- branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc 2009-06-06 11:27:58 UTC (rev 10263) @@ -136,11 +136,11 @@ semaphore 0x........ was first observed at: at 0x........: sem_init* (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:228) -[1/1] semaphore_post 0x........ value 0 -> 1 +[1/1] semaphore_post 0x........ value 4294967295 -> 0 FIXME: can't figure out how to verify wrap of sem_post -[1/1] semaphore_destroy 0x........ value 1 +[1/1] semaphore_destroy 0x........ value 0 ------------ dealloc of mem holding locks ------------ Modified: branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 =================================================================== --- branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 2009-06-06 11:27:58 UTC (rev 10263) @@ -136,11 +136,11 @@ semaphore 0x........ was first observed at: at 0x........: sem_init* (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:228) -[1/1] semaphore_post 0x........ value 0 -> 1 +[1/1] semaphore_post 0x........ value 4294967295 -> 0 FIXME: can't figure out how to verify wrap of sem_post -[1/1] semaphore_destroy 0x........ value 1 +[1/1] semaphore_destroy 0x........ value 0 ------------ dealloc of mem holding locks ------------ Modified: branches/DRDDEV/drd/tests/tsan_unittest.cpp =================================================================== --- branches/DRDDEV/drd/tests/tsan_unittest.cpp 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/drd/tests/tsan_unittest.cpp 2009-06-06 11:27:58 UTC (rev 10263) @@ -60,13 +60,13 @@ // Helgrind memory usage testing stuff // If not present in dynamic_annotations.h/.cc - ignore #ifndef ANNOTATE_RESET_STATS -#define ANNOTATE_RESET_STATS() +#define ANNOTATE_RESET_STATS() do { } while(0) #endif #ifndef ANNOTATE_PRINT_STATS -#define ANNOTATE_PRINT_STATS() +#define ANNOTATE_PRINT_STATS() do { } while(0) #endif #ifndef ANNOTATE_PRINT_MEMORY_USAGE -#define ANNOTATE_PRINT_MEMORY_USAGE(a) +#define ANNOTATE_PRINT_MEMORY_USAGE(a) do { } while(0) #endif // @@ -1691,7 +1691,7 @@ std::vector<MyThread*> vec(Nlog); - for (int i = 0; i < N_iter; i++) { + for (int j = 0; j < N_iter; j++) { // Create and start Nlog threads for (int i = 0; i < Nlog; i++) { vec[i] = new MyThread(Worker); @@ -2833,14 +2833,16 @@ void Worker2() { FLAG1=GLOB2; - while(!FLAG2); + while(!FLAG2) + ; GLOB2=FLAG2; } void Worker1() { FLAG2=GLOB1; - while(!FLAG1); + while(!FLAG1) + ; GLOB1=FLAG1; } @@ -5411,11 +5413,11 @@ // do few more random publishes. for (int i = 0; i < 20; i++) { - int beg = rand() % N; - int size = (rand() % (N - beg)) + 1; + const int begin = rand() % N; + const int size = (rand() % (N - begin)) + 1; CHECK(size > 0); - CHECK(beg + size <= N); - PublishRange(beg, beg + size); + CHECK(begin + size <= N); + PublishRange(begin, begin + size); } printf("GLOB = %d\n", (int)GLOB[0]); Modified: branches/DRDDEV/exp-ptrcheck/h_main.c =================================================================== --- branches/DRDDEV/exp-ptrcheck/h_main.c 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/exp-ptrcheck/h_main.c 2009-06-06 11:27:58 UTC (rev 10263) @@ -2461,7 +2461,7 @@ ADD(0, __NR_task_self_trap); // Machine-dependent syscalls. - ADD(0, __NR_pthread_set_self); + ADD(0, __NR_thread_fast_set_cthread_self); /* ------------------------------------ */ Modified: branches/DRDDEV/include/vki/vki-scnums-darwin.h =================================================================== --- branches/DRDDEV/include/vki/vki-scnums-darwin.h 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/include/vki/vki-scnums-darwin.h 2009-06-06 11:27:58 UTC (rev 10263) @@ -116,18 +116,21 @@ #if defined(VGA_x86) // osfmk/i386/machdep_call.c -// # define __NR_thread_get_cthread_self VG_DARWIN_SYSCALL_CONSTRUCT_MDEP(0) -// # define __NR_thread_set_cthread_self VG_DARWIN_SYSCALL_CONSTRUCT_MDEP(1) -// # define __NR_2 VG_DARWIN_SYSCALL_CONSTRUCT_MDEP(2) -# define __NR_pthread_set_self VG_DARWIN_SYSCALL_CONSTRUCT_MDEP(3) -// # define __NR_thread_set_user_ldt VG_DARWIN_SYSCALL_CONSTRUCT_MDEP(4) -// # define __NR_i386_set_ldt VG_DARWIN_SYSCALL_CONSTRUCT_MDEP(5) -// # define __NR_i386_get_ldt VG_DARWIN_SYSCALL_CONSTRUCT_MDEP(6) +// DDD: the last two are BSD_CALL instead of CALL... +//#define __NR_thread_get_cthread_self VG_DARWIN_SYSCALL_CONSTRUCT_MDEP(0) +//#define __NR_thread_set_cthread_self VG_DARWIN_SYSCALL_CONSTRUCT_MDEP(1) +// 2 is invalid +#define __NR_thread_fast_set_cthread_self VG_DARWIN_SYSCALL_CONSTRUCT_MDEP(3) +//#define __NR_thread_set_user_ldt VG_DARWIN_SYSCALL_CONSTRUCT_MDEP(4) +//#define __NR_i386_set_ldt VG_DARWIN_SYSCALL_CONSTRUCT_MDEP(5) +//#define __NR_i386_get_ldt VG_DARWIN_SYSCALL_CONSTRUCT_MDEP(6) #elif defined(VGA_amd64) // osfmk/i386/machdep_call.c -# define __NR_pthread_set_self VG_DARWIN_SYSCALL_CONSTRUCT_MDEP(3) +// 0, 1, 2 are invalid +#define __NR_thread_fast_set_cthread_self VG_DARWIN_SYSCALL_CONSTRUCT_MDEP(3) +// 4, 5, 6 are invalid #else # error unknown architecture Modified: branches/DRDDEV/nightly/README.txt =================================================================== --- branches/DRDDEV/nightly/README.txt 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/nightly/README.txt 2009-06-06 11:27:58 UTC (rev 10263) @@ -1,44 +1,204 @@ - +INTRO +----- This directory (nightly/) contains a simple, automatic build-and-test -system for Valgrind, intended to be run by cron. +system for Valgrind, intended to be run nightly by cron or a similar +program. -Note (importantly) it doesn't test the sources in the tree of which -this directory is a part (viz, nightly/..). Instead it checks out -a complete new tree, builds and tests that independently of the -existing tree. -To use, choose a tag, probably a machine name, and run +BASIC OPERATIONS +---------------- +When run, the system checks out two trees: the SVN trunk from 24 hours ago +and the SVN trunk from now. ("24 hours ago" and "now" are determined when +the script starts running, so if any commits happen while the tests are +running they will not be tested.) - bin/nightly /path/to/valgrind/nightly/ <tag> +If the two trees are different (i.e. there have been commits in the past 24 +hours) it builds ("make"), installs ("make install") and runs the regression +tests ("make regtest") in both, and compares the results. Note that the +"make install" isn't necessary in order to run the tests because the +regression tests use the code built (with "make") within the tree, but it's +worth doing because it tests that "make install" isn't totally broken. +After checking both trees, it emails a summary of the results to a +recipient. All this typically takes something like 30 minutes. -and supply the following two config files: +If the two trees are identical, the tests are not run and no results are +emailed. This avoids spamming people with uninteresting results emails when +no commits have happened recently. -- conf/<tag>.conf: this is sourced by the 'nightly' script, and can define - any or all of the following environment variables: - ABT_DETAILS: describes the machine in more detail, eg. the OS. The default - is empty. - ABT_CONFIGURE_OPTIONS: gives extra configure options. The default is empty. - ABT_EVAL: if provided, it must be the name of a shell script that executes - the shell command $1 with arguments $2 .. ${$#}. Allows to compile and - run the Valgrind regression tests on another system than the system the - 'nightly' script runs on. It is assumed that the remote system shares the - local filesystem tree through e.g. NFS. It is the responsibility of the - shell script to set the remote working directory such that it matches the - local current directory ($PWD). - ABT_RUN_REGTEST: if provided, it must be the name of an argumentless shell - function (also specified in the tag.conf file) that will be used to run - the tests. If not specified, the usual "perl tests/vg_regtest --all" - will be used. - ABT_JOBS: allows parallel builds -- it's passed as the argument to "make - -j" when building Valgrind and the tests. The default is 1. - [XXX: the .NOTPARALLEL that currently resides in Makefile.all.am foils - this!] +SETTING UP +---------- +To set up nightly testing for a machine, do the following. -- conf/<tag>.sendmail: this should be a script that sends an email to the - desired recipient (eg. the valgrind-developers list). It takes three - command line arguments. The first is the email subject line, the second - is the name of the file containing the email's body (showing the tests - that failed, and the difference between now and 24 hours ago), the third - is the name of the file containing all the diffs (which can be made into - an attachment, for example). +(1) Check out just this directory from the repository, eg: + + svn co svn://svn.valgrind.org/valgrind/trunk/nightly $DIR + + where $DIR is the name of the directory you want it to be in. + + Note that this doesn't check out the whole Valgrind tree, just the + directory containing the nightly testing stuff. This is possible + because the testing script doesn't check the code in the tree it belongs + to; rather it checks out new trees (within $DIR) and tests them + independently. + +(2) Choose a tag that identifies the test results. This is usually the + machine name. We'll call it $TAG in what follows. + +(3) Create a configuration file $DIR/conf/$TAG.conf. It is sourced by the + 'nightly' script, and can define any or all of the following environment + variables. (In most cases, only ABT_DETAILS is needed.) + + - ABT_DETAILS: describes the machine in more detail, eg. the OS. The + default is empty, but you should define it. An example: + + export ABT_DETAILS="Ubuntu 9.04, Intel x86-64" + + You could also use some invocation of 'uname' or something similar + to generate this string. Eg. on Ubuntu Linux this works nicely: + + export ABT_DETAILS="`cat /etc/issue.net`, `uname -m`" + + And on Mac OS X this works nicely: + + export ABT_DETAILS=`uname -mrs` + + The advantage of doing it like this is that if you update the OS on + the test machine you won't have to update ABT_DETAILS manually. + + - ABT_CONFIGURE_OPTIONS: gives extra configure options. The default is + empty. + + - ABT_EVAL: if provided, it must be the name of a shell script that + executes the shell command $1 with arguments $2 .. ${$#}. Allows to + compile and run the Valgrind regression tests on another system than + the system the 'nightly' script runs on. It is assumed that the remote + system shares the local filesystem tree through e.g. NFS. It is the + responsibility of the shell script to set the remote working directory + such that it matches the local current directory ($PWD). + + - ABT_RUN_REGTEST: if provided, it must be the name of an argumentless + shell function (also specified in the $TAG.conf file) that will be used + to run the tests. If not specified, the usual "make regtest" will be + used. + + - ABT_JOBS: allows parallel builds -- it's passed as the argument to + "make -j" when building Valgrind and the tests. The default is 1. + [XXX: the .NOTPARALLEL that currently resides in Makefile.all.am foils + this!] + + Note that the appropriate syntax to use in this file will depend on the + shell from which the $DIR/bin/nightly script is run (which in turn may + depend on what shell is used by cron or any similar program). + +(4) Create a mailer script $DIR/conf/$TAG.sendmail. It must be executable. + It's used to send email results to the desired recipient (e.g. + val...@li...) It must handle three command + line arguments. + + - The first argument is the email subject line. It contains + $ABT_DETAILS plus some other stuff. + + - The second argument is the name of the file containing the email's + body (which shows the tests that failed, and the differences between now + and 24 hours ago). + + - The third is the name of the file containing all the diffs from + failing tests. Depending on the test results you get, you could + inline this file into the email body, or attach it, or compress and + attach it, or even omit it. The right choice depends on how many + failures you typically get -- if you get few failures, inlining the + results make them easier to read; if you get many failures, + compressing might be a good idea to minimise the size of the emails. + + The best way to do this depends on how mail is set up on your machine. + You might be able to use /usr/bin/mail, or you might need something more + elaborate like using Mutt to send mail via an external account. + + At first, you should probably just send emails to yourself for testing + purposes. After it's working, then sending it to others might be + appropriate. + +(5) To run the tests, execute: + + $DIR/bin/nightly $DIR $TAG + + You probably want to put this command into a cron file or equivalent + so it is run regularly (preferably every night). Actually, it's + probably better to put that command inside a script, and run the script + from cron, rather than running $DIR/bin/nightly directly. That way you + can put any other configuration stuff that's necessary inside the + script (e.g. make sure that programs used by the mailer script are in + your PATH). + + +OUTPUT FILES +------------ +If the tests are run, the following files are produced: + +- $DIR/old.verbose and $DIR/new.verbose contain full output of the whole + process for each of the two trees. + +- $DIR/old.short and $DIR/new.short contain summary output of the process + for each of the two trees. The diff between these two files goes in + $DIR/diff.short. + +- $DIR/final contains the overall summary, constructed from $DIR/old.short, + $DIR/new.short, $DIR/diff.short and some other bits and pieces. (The name + of this file is what's passed as the second argument to + $DIR/conf/$TAG.sendmail.) + +- $DIR/diffs holds the diffs from all the failing tests in the newer tree, + concatenated together; the diff from each failure is truncated at 100 + lines to minimise possible size blow-outs. (The name of this file is + what's passed as the third argument to $DIR/conf/$TAG.sendmail.) + +- $DIR/sendmail.log contains the output (stdout and stderr) from + $DIR/conf/$TAG.sendmail goes in $DIR/sendmail.log. + +- $DIR/valgrind-old/ and $DIR/valgrind-new/ contain the tested trees (and + $DIR/valgrind-old/Inst/ and $DIR/valgrind-new/Inst/ contain the installed + code). + +If the tests aren't run, the following file is produced: + +- $DIR/unchanged.log is created only if no tests were run because the two + trees were identical. It will contain a short explanatory message. + +Each time the tests are run, all files from previous runs are deleted. + + +TROUBLESHOOTING +--------------- +If something goes wrong, looking at the output files can be useful. For +example, if no email was sent but you expected one, check sendmail.log to +see if the mailer script had a problem. Or check if unchanged.log exists. + +Occasionally the SVN server isn't available when the tests runs, for either +or both trees. When this happens the email will be sent but it won't be +very informative. Usually it's just a temporary server problem and it'll +run fine the next time without you having to do anything. + +Note that the test suite is imperfect: +- There are very few machines where all tests pass; that's why the old/new + diff is produced. Some of the tests may not be as portable as intended. +- Some tests are non-deterministic, and so may pass one day and fail the + next. + +Improving the test suite to avoid these problems is a long-term goal but it +isn't easy. + + +MAINTENANCE +----------- +The scripts in the nightly/ directory occasionally get updated. If that +happens, you can just "svn update" within $DIR to get the updated versions, +which will then be used the next time the tests run. (It's possible that +the scripts will be changed in a way that requires changes to the files in +$DIR/conf/, but we try to avoid this.) + +If you want such updates to happen automatically, you could write a script +that does all the steps in SETTING UP above, and instead run that script +from cron. + + Modified: branches/DRDDEV/nightly/bin/nightly =================================================================== --- branches/DRDDEV/nightly/bin/nightly 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/nightly/bin/nightly 2009-06-06 11:27:58 UTC (rev 10263) @@ -19,11 +19,13 @@ str=$2 shift 2 - # Header in short logfile - echo -n " $str ... " >> $logfile.short + # Header in short logfile. + # We use "printf" to avoid printing a newline; "echo -n" isn't POSIX and + # so isn't supported on all systems. + printf " $str ... " >> $logfile.short # Header and command in verbose logfile - echo -n " $str ... " >> $logfile.verbose + printf " $str ... " >> $logfile.verbose echo "$*" >> $logfile.verbose # Run the command @@ -54,23 +56,43 @@ fi # Get args from command line -ABT_TOP=$1 -ABT_MACHINE=$2 +DIR=$1 +TAG=$2 # Get times and date -ABT_START=`date "+%F %H:%M:%S %Z"` +START=`date "+%F %H:%M:%S %Z"` -svn_old_date=`date --date=yesterday +%Y-%m-%dT%H:%M:%S` -svn_new_date=`date --date=today +%Y-%m-%dT%H:%M:%S` +# This is one of the formats SVN accepts. Yes, the 'T' appears in the final +# string, it's supposed to be like that. +svn_date_format="+%Y-%m-%dT%H:%M:%S" -cd $ABT_TOP +# The time-and-date from 24 hours ago is tricky; Linux and Darwin have +# different ways of getting it, so we try things until something works. +svn_old_date= +if [ "z" = "z${svn_old_date}" ] ; then + # Linux method. + svn_old_date=`date --date=yesterday $svn_date_format 2> /dev/null` +fi +if [ "z" = "z${svn_old_date}" ] ; then + # Darwin method. + svn_old_date=`date -v-24H $svn_date_format 2> /dev/null` +fi +if [ "z" = "z${svn_old_date}" ] ; then + echo "Sorry, can't work out the time and date for 24 hours ago, aborting" + exit 1; +fi +# The time-and-date for now is easy. +svn_new_date=`date $svn_date_format` + +cd $DIR + # Clean up output files produced by a previous run. -rm -rf diffs diff.short final Inst new.short new.verbose old.short old.verbose -rm -rf sendmail.log unchanged.log valgrind +rm -rf diffs diff.short final new.short new.verbose old.short old.verbose +rm -rf sendmail.log unchanged.log valgrind-old valgrind-new # Setup any relevant environment variables from conf/<tag>.conf. -. conf/$ABT_MACHINE.conf +. conf/$TAG.conf if [ "${ABT_JOBS}" = "" ]; then ABT_JOBS=1 fi @@ -78,7 +100,7 @@ ABT_EVAL="eval" fi if [ "${ABT_RUN_REGTEST}" = "" ]; then - ABT_RUN_REGTEST="cd valgrind && perl tests/vg_regtest --all" + ABT_RUN_REGTEST="make regtest" fi @@ -98,9 +120,6 @@ # for the current one. for logfile in old new ; do - # Remove the old valgrind directory. - rm -rf valgrind - # Remove old short and verbose log files, and start the new ones for ext in short verbose ; do echo > $logfile.$ext @@ -118,19 +137,19 @@ # Check out, build, run tests runcmd $logfile \ "Checking out valgrind source tree" \ - "svn co ${valgrind_svn_repo} -r {$svn_date} valgrind" && \ + "svn co ${valgrind_svn_repo} -r {$svn_date} valgrind-$logfile" && \ \ runcmd $logfile \ "Configuring valgrind " \ - "cd valgrind && ./autogen.sh && ./configure --prefix=`pwd`/Inst ${ABT_CONFIGURE_OPTIONS}" && \ + "cd valgrind-$logfile && ./autogen.sh && ./configure --prefix=`pwd`/valgrind-$logfile/Inst ${ABT_CONFIGURE_OPTIONS}" && \ \ runcmd $logfile \ "Building valgrind " \ - "cd valgrind && make -j ${ABT_JOBS} && make -j ${ABT_JOBS} check && make install" && \ + "cd valgrind-$logfile && make -j ${ABT_JOBS} && make -j ${ABT_JOBS} check && make install" && \ \ runcmd $logfile \ "Running regression tests " \ - "${ABT_RUN_REGTEST}" + "cd valgrind-$logfile && ${ABT_RUN_REGTEST}" # Grab some indicative text for the short log file -- if the regtests # succeeded, show their results. If we didn't make it that far, show the @@ -152,10 +171,14 @@ # Prepare results and send #---------------------------------------------------------------------------- +# Get times and date +END=`date "+%F %H:%M:%S %Z"` + # 'final' shows the difference between the old and new results -echo > final -echo "Nightly build on" $ABT_MACHINE "(" $ABT_DETAILS ")" \ - "started at" $ABT_START >> final +echo > final +echo "Nightly build on" $TAG "(" $ABT_DETAILS ")" >> final +echo "Started at" $START >> final +echo "Ended at" $END >> final # If the results differ from 24 hours ago, print extra stuff. diff -C1 old.short new.short > diff.short @@ -208,7 +231,7 @@ fi # Use the conf/<tag>.sendmail script to email the results. -conf/$ABT_MACHINE.sendmail \ - "$changed_str$ABT_START nightly build ($ABT_MACHINE, $ABT_DETAILS)" \ +conf/$TAG.sendmail \ + "$changed_str$START nightly build ($TAG, $ABT_DETAILS)" \ final \ diffs > sendmail.log 2>&1 Modified: branches/DRDDEV/nightly/conf/georgia-tech-cellbuzz-cross.conf =================================================================== --- branches/DRDDEV/nightly/conf/georgia-tech-cellbuzz-cross.conf 2009-06-06 10:56:40 UTC (rev 10262) +++ branches/DRDDEV/nightly/conf/georgia-tech-cellbuzz-cross.conf 2009-06-06 11:27:58 UTC (rev 10263) @@ -14,7 +14,6 @@ ABT_JOBS=3 cellbuzz_run_regtest() { - cd valgrind || return $? rm -f regtest-output.txt jobid=`echo "{ cd $PWD && perl tests/vg_regtest --all; } >& $PWD/regtest-output.txt" | qsub` echo "Job ID = ${jobid}" |
|
From: <sv...@va...> - 2009-06-06 10:56:47
|
Author: bart
Date: 2009-06-06 11:56:40 +0100 (Sat, 06 Jun 2009)
New Revision: 10262
Log:
- Robustness improvement: do not trigger an assertion failure if one
thread destroys and reinitializes a semaphore another thread is
waiting on but print an error message instead.
- Behavior change: always decrement 'value', even if this makes value
negative.
- Updated expected output files.
Modified:
trunk/drd/drd_semaphore.c
trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3
trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b
trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5
trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc
trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8
Modified: trunk/drd/drd_semaphore.c
===================================================================
--- trunk/drd/drd_semaphore.c 2009-06-06 09:28:28 UTC (rev 10261)
+++ trunk/drd/drd_semaphore.c 2009-06-06 10:56:40 UTC (rev 10262)
@@ -274,13 +274,22 @@
p ? p->value : 0,
p ? p->value - 1 : 0);
}
- tl_assert(p);
- tl_assert(p->waiters > 0);
- p->waiters--;
- tl_assert((int)p->waiters >= 0);
- tl_assert((int)p->value >= 0);
- if (p->value == 0)
+
+ if (p)
{
+ p->waiters--;
+ p->value--;
+ }
+
+ /*
+ * Note: if another thread destroyed and reinitialized a semaphore while
+ * the current thread was waiting in sem_wait, p->waiters may have been
+ * set to zero by DRD_(semaphore_initialize)() after
+ * DRD_(semaphore_pre_wait)() has finished before
+ * DRD_(semaphore_post_wait)() has been called.
+ */
+ if (p == NULL || (int)p->value < 0 || (int)p->waiters < 0)
+ {
SemaphoreErrInfo sei = { DRD_(thread_get_running_tid)(), semaphore };
VG_(maybe_record_error)(VG_(get_running_tid)(),
SemaphoreErr,
@@ -289,8 +298,7 @@
&sei);
return;
}
- p->value--;
- tl_assert((int)p->value >= 0);
+
if (p->waits_to_skip > 0)
p->waits_to_skip--;
else
Modified: trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3
===================================================================
--- trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 2009-06-06 09:28:28 UTC (rev 10261)
+++ trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 2009-06-06 10:56:40 UTC (rev 10262)
@@ -137,11 +137,11 @@
semaphore 0x........ was first observed at:
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
-[1/1] semaphore_post 0x........ value 0 -> 1
+[1/1] semaphore_post 0x........ value 4294967295 -> 0
FIXME: can't figure out how to verify wrap of sem_post
-[1/1] semaphore_destroy 0x........ value 1
+[1/1] semaphore_destroy 0x........ value 0
------------ dealloc of mem holding locks ------------
Modified: trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b
===================================================================
--- trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b 2009-06-06 09:28:28 UTC (rev 10261)
+++ trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b 2009-06-06 10:56:40 UTC (rev 10262)
@@ -148,11 +148,11 @@
semaphore 0x........ was first observed at:
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
-[1/1] semaphore_post 0x........ value 0 -> 1
+[1/1] semaphore_post 0x........ value 4294967295 -> 0
FIXME: can't figure out how to verify wrap of sem_post
-[1/1] semaphore_destroy 0x........ value 1
+[1/1] semaphore_destroy 0x........ value 0
------------ dealloc of mem holding locks ------------
Modified: trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5
===================================================================
--- trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 2009-06-06 09:28:28 UTC (rev 10261)
+++ trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 2009-06-06 10:56:40 UTC (rev 10262)
@@ -136,11 +136,11 @@
semaphore 0x........ was first observed at:
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
-[1/1] semaphore_post 0x........ value 0 -> 1
+[1/1] semaphore_post 0x........ value 4294967295 -> 0
FIXME: can't figure out how to verify wrap of sem_post
-[1/1] semaphore_destroy 0x........ value 1
+[1/1] semaphore_destroy 0x........ value 0
------------ dealloc of mem holding locks ------------
Modified: trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc
===================================================================
--- trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc 2009-06-06 09:28:28 UTC (rev 10261)
+++ trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc 2009-06-06 10:56:40 UTC (rev 10262)
@@ -136,11 +136,11 @@
semaphore 0x........ was first observed at:
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
-[1/1] semaphore_post 0x........ value 0 -> 1
+[1/1] semaphore_post 0x........ value 4294967295 -> 0
FIXME: can't figure out how to verify wrap of sem_post
-[1/1] semaphore_destroy 0x........ value 1
+[1/1] semaphore_destroy 0x........ value 0
------------ dealloc of mem holding locks ------------
Modified: trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8
===================================================================
--- trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 2009-06-06 09:28:28 UTC (rev 10261)
+++ trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 2009-06-06 10:56:40 UTC (rev 10262)
@@ -136,11 +136,11 @@
semaphore 0x........ was first observed at:
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
-[1/1] semaphore_post 0x........ value 0 -> 1
+[1/1] semaphore_post 0x........ value 4294967295 -> 0
FIXME: can't figure out how to verify wrap of sem_post
-[1/1] semaphore_destroy 0x........ value 1
+[1/1] semaphore_destroy 0x........ value 0
------------ dealloc of mem holding locks ------------
|
|
From: <sv...@va...> - 2009-06-06 09:28:33
|
Author: bart
Date: 2009-06-06 10:28:28 +0100 (Sat, 06 Jun 2009)
New Revision: 10261
Log:
Disabled libgomp intercepts. Since libgomp support was added to DRD, the
libgomp ABI has changed. Two new functions have been added, namely
gomp_team_barrier_wait() and gomp_team_barrier_wake(). The simplest way
to support all libgomp functions is by disabling the libgomp intercepts.
This fixes bug #195169.
Modified:
trunk/drd/drd_gomp_intercepts.c
trunk/drd/drd_semaphore.c
Modified: trunk/drd/drd_gomp_intercepts.c
===================================================================
--- trunk/drd/drd_gomp_intercepts.c 2009-06-06 08:56:00 UTC (rev 10260)
+++ trunk/drd/drd_gomp_intercepts.c 2009-06-06 09:28:28 UTC (rev 10261)
@@ -59,6 +59,8 @@
// Function definitions.
+#if 0
+
GOMP_FUNC(void, gompZubarrierZuinit, // gomp_barrier_init
gomp_barrier_t* barrier, unsigned count)
{
@@ -115,3 +117,5 @@
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_BARRIER_WAIT,
barrier, gomp_barrier, 1, 0, 0);
}
+
+#endif
Modified: trunk/drd/drd_semaphore.c
===================================================================
--- trunk/drd/drd_semaphore.c 2009-06-06 08:56:00 UTC (rev 10260)
+++ trunk/drd/drd_semaphore.c 2009-06-06 09:28:28 UTC (rev 10261)
@@ -299,14 +299,15 @@
tl_assert(sg);
if (sg)
{
+ DRD_(thread_new_segment)(tid);
+ s_semaphore_segment_creation_count++;
+
if (p->last_sem_post_tid != tid
&& p->last_sem_post_tid != DRD_INVALID_THREADID)
{
DRD_(thread_combine_vc2)(tid, &sg->vc);
}
DRD_(sg_put)(sg);
- DRD_(thread_new_segment)(tid);
- s_semaphore_segment_creation_count++;
}
}
}
@@ -331,11 +332,11 @@
}
p->last_sem_post_tid = tid;
- DRD_(thread_new_segment)(tid);
sg = 0;
DRD_(thread_get_latest_segment)(&sg, tid);
tl_assert(sg);
DRD_(segment_push)(p, sg);
+ DRD_(thread_new_segment)(tid);
s_semaphore_segment_creation_count++;
}
|
|
From: <sv...@va...> - 2009-06-06 08:56:09
|
Author: bart
Date: 2009-06-06 09:56:00 +0100 (Sat, 06 Jun 2009)
New Revision: 10260
Log:
Disabled libgomp intercepts. Since libgomp support was added to DRD, the
libgomp ABI has changed. Two new functions have been added, namely
gomp_team_barrier_wait() and gomp_team_barrier_wake(). The simplest way
to support all libgomp functions is by disabling the libgomp intercepts.
This fixes bug #195169.
Modified:
branches/DRDDEV/drd/drd_gomp_intercepts.c
Modified: branches/DRDDEV/drd/drd_gomp_intercepts.c
===================================================================
--- branches/DRDDEV/drd/drd_gomp_intercepts.c 2009-06-06 08:51:13 UTC (rev 10259)
+++ branches/DRDDEV/drd/drd_gomp_intercepts.c 2009-06-06 08:56:00 UTC (rev 10260)
@@ -59,6 +59,8 @@
// Function definitions.
+#if 0
+
GOMP_FUNC(void, gompZubarrierZuinit, // gomp_barrier_init
gomp_barrier_t* barrier, unsigned count)
{
@@ -115,3 +117,5 @@
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_BARRIER_WAIT,
barrier, gomp_barrier, 1, 0, 0);
}
+
+#endif
|
|
From: <sv...@va...> - 2009-06-06 08:51:15
|
Author: bart
Date: 2009-06-06 09:51:13 +0100 (Sat, 06 Jun 2009)
New Revision: 10259
Log:
Updated test plan.
Modified:
trunk/drd/Testing.txt
Modified: trunk/drd/Testing.txt
===================================================================
--- trunk/drd/Testing.txt 2009-06-06 08:50:14 UTC (rev 10258)
+++ trunk/drd/Testing.txt 2009-06-06 08:51:13 UTC (rev 10259)
@@ -32,11 +32,8 @@
6. Run the regression tests as follows:
perl tests/vg_regtest drd
-7. Run Konstantin's regression tests:
- mkdir -p drt/unittest
- svn checkout http://data-race-test.googlecode.com/svn/trunk/unittest drt/unittest
- make -C drt/unittest -s all
- ./vg-in-place --tool=drd --check-stack-var=yes drt/unittest/racecheck_unittest 2>&1|less
+7. Run the regression tests that were developed for Thread Sanitizer:
+ ./vg-in-place --tool=drd --check-stack-var=yes drt/test/tsan_unittest 2>&1|less
8. Test the slowdown for matinv for various matrix sizes via the script
drd/scripts/run-matinv (must be about 24 for i == 1 and about
@@ -55,7 +52,25 @@
having closed the GNOME terminal window:
./vg-in-place --tool=drd --var-info=yes --trace-children=yes gnome-terminal
-11. Test DRD with Firefox. First of all, make sure that Valgrind is patched
+11. Rerun the GraphicsMagick test suite:
+ 1. Recompile gcc via drd/scripts/download-and-build-gcc.
+ 2. Replace the distro-provided libgomp.so* by the newly compiled versions:
+ cp $HOME/gcc-.../lib/libgomp.so.1.0.0.0 /usr/lib
+ cp $HOME/gcc-.../lib64/libgomp.so.1.0.0.0 /usr/lib64
+ rpm --verify libgomp43-32bit
+ rpm --verify libgomp43
+ 3. Build and install Valgrind in /usr:
+ ./autogen.sh && ./configure --prefix=/usr CC=$HOME/gcc-4.4.0/bin/gcc \
+ && make -s && make -s install
+ 4. Download the GraphicsMagick source code:
+ cvs -d :pserver:ano...@cv...:/GraphicsMagick login
+ cvs -d :pserver:ano...@cv...:/GraphicsMagick co GraphicsMagick
+ cd GraphicsMagick
+ ./configure --prefix=$HOME/GraphicsMagick-cvs
+ export OMP_NUM_THREADS=4
+ make -s drd
+
+12. Test DRD with Firefox. First of all, make sure that Valgrind is patched
such that it supports libjemalloc.so:
drd/scripts/add-libjemalloc-support
Next, build and install Firefox 3:
|
|
From: <sv...@va...> - 2009-06-06 08:50:17
|
Author: bart Date: 2009-06-06 09:50:14 +0100 (Sat, 06 Jun 2009) New Revision: 10258 Log: Increased gcc version from 4.3.2 to 4.4.0. Modified: trunk/drd/scripts/download-and-build-gcc Modified: trunk/drd/scripts/download-and-build-gcc =================================================================== --- trunk/drd/scripts/download-and-build-gcc 2009-06-06 08:48:27 UTC (rev 10257) +++ trunk/drd/scripts/download-and-build-gcc 2009-06-06 08:50:14 UTC (rev 10258) @@ -6,7 +6,7 @@ # are called gmp-devel and mpfr-devel. -GCC_VERSION=4.3.2 +GCC_VERSION=4.4.0 FSF_MIRROR=ftp://ftp.easynet.be/gnu SRCDIR=$HOME/software DOWNLOADS=$SRCDIR/downloads |
|
From: <sv...@va...> - 2009-06-06 08:48:32
|
Author: bart
Date: 2009-06-06 09:48:27 +0100 (Sat, 06 Jun 2009)
New Revision: 10257
Log:
- Replaced calls to DRD_(vc_snprint)() by calls to DRD_(vc_aprint)(),
and removed the implementation of DRD_(vc_snprint)().
- When segment tracing is enabled, information about updates of segment
vector clocks due to synchronization actions is now traced.
- Added command-line option --trace-conflict-set-bm.
Modified:
branches/DRDDEV/drd/drd_load_store.c
branches/DRDDEV/drd/drd_main.c
branches/DRDDEV/drd/drd_segment.c
branches/DRDDEV/drd/drd_semaphore.c
branches/DRDDEV/drd/drd_thread.c
branches/DRDDEV/drd/drd_thread.h
branches/DRDDEV/drd/drd_vc.c
branches/DRDDEV/drd/drd_vc.h
branches/DRDDEV/drd/tests/annotate_trace_memory.stderr.exp
Modified: branches/DRDDEV/drd/drd_load_store.c
===================================================================
--- branches/DRDDEV/drd/drd_load_store.c 2009-06-05 18:11:08 UTC (rev 10256)
+++ branches/DRDDEV/drd/drd_load_store.c 2009-06-06 08:48:27 UTC (rev 10257)
@@ -86,9 +86,9 @@
{
if (DRD_(is_any_traced)(addr, addr + size))
{
- char vc[80];
- DRD_(vc_snprint)(vc, sizeof(vc),
- DRD_(thread_get_vc)(DRD_(thread_get_running_tid)()));
+ char* vc;
+
+ vc = DRD_(vc_aprint)(DRD_(thread_get_vc)(DRD_(thread_get_running_tid)()));
VG_(message)(Vg_UserMsg,
"%s 0x%lx size %ld (vg %d / drd %d / vc %s)",
access_type == eLoad
@@ -105,6 +105,7 @@
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
vc);
+ VG_(free)(vc);
VG_(get_and_pp_StackTrace)(VG_(get_running_tid)(),
VG_(clo_backtrace_size));
tl_assert(DRD_(DrdThreadIdToVgThreadId)(DRD_(thread_get_running_tid)())
Modified: branches/DRDDEV/drd/drd_main.c
===================================================================
--- branches/DRDDEV/drd/drd_main.c 2009-06-05 18:11:08 UTC (rev 10256)
+++ branches/DRDDEV/drd/drd_main.c 2009-06-06 08:48:27 UTC (rev 10257)
@@ -79,6 +79,7 @@
int trace_csw = -1;
int trace_fork_join = -1;
int trace_conflict_set = -1;
+ int trace_conflict_set_bm = -1;
int trace_mutex = -1;
int trace_rwlock = -1;
int trace_segment = -1;
@@ -101,6 +102,7 @@
else if VG_BOOL_CLO(arg, "--trace-clientobj", trace_clientobj) {}
else if VG_BOOL_CLO(arg, "--trace-cond", trace_cond) {}
else if VG_BOOL_CLO(arg, "--trace-conflict-set", trace_conflict_set) {}
+ else if VG_BOOL_CLO(arg, "--trace-conflict-set-bm", trace_conflict_set_bm){}
else if VG_BOOL_CLO(arg, "--trace-csw", trace_csw) {}
else if VG_BOOL_CLO(arg, "--trace-fork-join", trace_fork_join) {}
else if VG_BOOL_CLO(arg, "--trace-mutex", trace_mutex) {}
@@ -157,6 +159,8 @@
DRD_(thread_set_trace_fork_join)(trace_fork_join);
if (trace_conflict_set != -1)
DRD_(thread_trace_conflict_set)(trace_conflict_set);
+ if (trace_conflict_set_bm != -1)
+ DRD_(thread_trace_conflict_set_bm)(trace_conflict_set_bm);
if (trace_mutex != -1)
DRD_(mutex_set_trace)(trace_mutex);
if (trace_rwlock != -1)
@@ -222,6 +226,9 @@
" --trace-clientobj=yes|no Trace all client object activity [no].\n"
" --trace-csw=yes|no Trace all scheduler context switches [no].\n"
" --trace-conflict-set=yes|no Trace all conflict set updates [no].\n"
+" --trace-conflict-set-bm=yes|no Trace all conflict set bitmap\n"
+" updates [no]. Note: enabling this option\n"
+" will generate a lot of output !\n"
" --trace-segment=yes|no Trace segment actions [no].\n"
" --trace-suppr=yes|no Trace all address suppression actions [no].\n"
);
Modified: branches/DRDDEV/drd/drd_segment.c
===================================================================
--- branches/DRDDEV/drd/drd_segment.c 2009-06-05 18:11:08 UTC (rev 10256)
+++ branches/DRDDEV/drd/drd_segment.c 2009-06-06 08:48:27 UTC (rev 10257)
@@ -89,16 +89,15 @@
if (s_trace_segment)
{
- char msg[256];
- VG_(snprintf)(msg, sizeof(msg),
- "New segment for thread %d/%d with vc ",
- created != VG_INVALID_THREADID
- ? DRD_(DrdThreadIdToVgThreadId)(created)
- : DRD_INVALID_THREADID,
- created);
- DRD_(vc_snprint)(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
- &sg->vc);
- VG_(message)(Vg_UserMsg, "%s", msg);
+ char* vc;
+
+ vc = DRD_(vc_aprint)(&sg->vc);
+ VG_(message)(Vg_DebugMsg, "New segment for thread %d/%d with vc %s",
+ created != VG_INVALID_THREADID
+ ? DRD_(DrdThreadIdToVgThreadId)(created)
+ : DRD_INVALID_THREADID,
+ created, vc);
+ VG_(free)(vc);
}
}
@@ -130,17 +129,15 @@
static void DRD_(sg_delete)(Segment* const sg)
{
-#if 1
if (DRD_(sg_get_trace)())
{
- char msg[256];
- VG_(snprintf)(msg, sizeof(msg),
- "Discarding the segment with vector clock ");
- DRD_(vc_snprint)(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
- &sg->vc);
- VG_(message)(Vg_UserMsg, "%s", msg);
+ char* vc;
+
+ vc = DRD_(vc_aprint)(&sg->vc);
+ VG_(message)(Vg_DebugMsg, "Discarding the segment with vector clock %s",
+ vc);
+ VG_(free)(vc);
}
-#endif
s_segments_alive_count--;
@@ -169,13 +166,13 @@
if (s_trace_segment)
{
- char msg[256];
- VG_(snprintf)(msg, sizeof(msg),
- "Decrementing segment reference count %d -> %d with vc ",
- sg->refcnt, sg->refcnt - 1);
- DRD_(vc_snprint)(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
- &sg->vc);
- VG_(message)(Vg_UserMsg, "%s", msg);
+ char* vc;
+
+ vc = DRD_(vc_aprint)(&sg->vc);
+ VG_(message)(Vg_DebugMsg,
+ "Decrementing segment reference count %d -> %d with vc %s",
+ sg->refcnt, sg->refcnt - 1, vc);
+ VG_(free)(vc);
}
tl_assert(sg->refcnt >= 1);
@@ -196,16 +193,15 @@
if (s_trace_segment)
{
- char msg[256];
+ char *vc1, *vc2;
- VG_(snprintf)(msg, sizeof(msg), "Merging segments with vector clocks ");
- DRD_(vc_snprint)(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
- &sg1->vc);
- VG_(snprintf)(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
- " and ");
- DRD_(vc_snprint)(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
- &sg2->vc);
- VG_(message)(Vg_UserMsg, "%s", msg);
+ vc1 = DRD_(vc_aprint)(&sg1->vc);
+ vc2 = DRD_(vc_aprint)(&sg2->vc);
+
+ VG_(message)(Vg_DebugMsg, "Merging segments with vector clocks %s and %s",
+ vc1, vc2);
+ VG_(free)(vc1);
+ VG_(free)(vc2);
}
s_segment_merge_count++;
Modified: branches/DRDDEV/drd/drd_semaphore.c
===================================================================
--- branches/DRDDEV/drd/drd_semaphore.c 2009-06-05 18:11:08 UTC (rev 10256)
+++ branches/DRDDEV/drd/drd_semaphore.c 2009-06-06 08:48:27 UTC (rev 10257)
@@ -332,11 +332,11 @@
}
p->last_sem_post_tid = tid;
- DRD_(thread_new_segment)(tid);
sg = 0;
DRD_(thread_get_latest_segment)(&sg, tid);
tl_assert(sg);
DRD_(segment_push)(p, sg);
+ DRD_(thread_new_segment)(tid);
s_semaphore_segment_creation_count++;
}
Modified: branches/DRDDEV/drd/drd_thread.c
===================================================================
--- branches/DRDDEV/drd/drd_thread.c 2009-06-05 18:11:08 UTC (rev 10256)
+++ branches/DRDDEV/drd/drd_thread.c 2009-06-06 08:48:27 UTC (rev 10257)
@@ -70,6 +70,7 @@
struct bitmap* DRD_(g_conflict_set);
static Bool s_trace_context_switches = False;
static Bool s_trace_conflict_set = False;
+static Bool s_trace_conflict_set_bm = False;
static Bool s_trace_fork_join = False;
static Bool s_segment_merging = True;
static Bool s_new_segments_since_last_merge;
@@ -92,6 +93,13 @@
s_trace_conflict_set = t;
}
+/** Enables/disables conflict set bitmap tracing. */
+void DRD_(thread_trace_conflict_set_bm)(const Bool t)
+{
+ tl_assert(t == False || t == True);
+ s_trace_conflict_set_bm = t;
+}
+
/** Report whether fork/join tracing is enabled. */
Bool DRD_(thread_get_trace_fork_join)(void)
{
@@ -334,10 +342,12 @@
joiner, drd_joiner, joinee, drd_joinee);
if (joiner)
{
+ char* vc;
+
+ vc = DRD_(vc_aprint)(DRD_(thread_get_vc)(drd_joiner));
VG_(snprintf)(msg + VG_(strlen)(msg), msg_size - VG_(strlen)(msg),
- ", new vc: ");
- DRD_(vc_snprint)(msg + VG_(strlen)(msg), msg_size - VG_(strlen)(msg),
- DRD_(thread_get_vc)(drd_joiner));
+ ", new vc: %s", vc);
+ VG_(free)(vc);
}
VG_(message)(Vg_DebugMsg, "%s", msg);
VG_(free)(msg);
@@ -505,13 +515,7 @@
&& tid != DRD_INVALID_THREADID);
tl_assert(!! joinable == joinable);
tl_assert(DRD_(g_threadinfo)[tid].pt_threadid != INVALID_POSIX_THREADID);
-#if 0
- VG_(message)(Vg_DebugMsg,
- "thread_set_joinable(%d/%d, %s)",
- tid,
- DRD_(g_threadinfo)[tid].vg_threadid,
- joinable ? "joinable" : "detached");
-#endif
+
DRD_(g_threadinfo)[tid].detached_posix_thread = ! joinable;
}
@@ -769,20 +773,18 @@
DRD_(thread_compute_minimum_vc)(&thread_vc_min);
if (DRD_(sg_get_trace)())
{
- char msg[256];
+ char *vc_min, *vc_max;
VectorClock thread_vc_max;
DRD_(vc_init)(&thread_vc_max, 0, 0);
DRD_(thread_compute_maximum_vc)(&thread_vc_max);
- VG_(snprintf)(msg, sizeof(msg),
- "Discarding ordered segments -- min vc is ");
- DRD_(vc_snprint)(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
- &thread_vc_min);
- VG_(snprintf)(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
- ", max vc is ");
- DRD_(vc_snprint)(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
- &thread_vc_max);
- VG_(message)(Vg_UserMsg, "%s", msg);
+ vc_min = DRD_(vc_aprint)(&thread_vc_min);
+ vc_max = DRD_(vc_aprint)(&thread_vc_max);
+ VG_(message)(Vg_DebugMsg,
+ "Discarding ordered segments -- min vc is %s, max vc is %s",
+ vc_min, vc_max);
+ VG_(free)(vc_min);
+ VG_(free)(vc_max);
DRD_(vc_cleanup)(&thread_vc_max);
}
@@ -960,8 +962,26 @@
&& joinee != DRD_INVALID_THREADID);
tl_assert(DRD_(g_threadinfo)[joiner].last);
tl_assert(DRD_(g_threadinfo)[joinee].last);
+
+ if (DRD_(sg_get_trace)())
+ {
+ char *str1, *str2;
+ str1 = DRD_(vc_aprint)(&DRD_(g_threadinfo)[joiner].last->vc);
+ str2 = DRD_(vc_aprint)(&DRD_(g_threadinfo)[joinee].last->vc);
+ VG_(message)(Vg_DebugMsg, "Before join: joiner %s, joinee %s",
+ str1, str2);
+ VG_(free)(str1);
+ VG_(free)(str2);
+ }
DRD_(vc_combine)(&DRD_(g_threadinfo)[joiner].last->vc,
&DRD_(g_threadinfo)[joinee].last->vc);
+ if (DRD_(sg_get_trace)())
+ {
+ char* str;
+ str = DRD_(vc_aprint)(&DRD_(g_threadinfo)[joiner].last->vc);
+ VG_(message)(Vg_DebugMsg, "After join: %s", str);
+ VG_(free)(str);
+ }
thread_discard_ordered_segments();
if (joiner == DRD_(g_drd_running_tid))
@@ -992,6 +1012,15 @@
DRD_(vc_copy)(&old_vc, &DRD_(g_threadinfo)[tid].last->vc);
DRD_(vc_combine)(&DRD_(g_threadinfo)[tid].last->vc, vc);
+ if (DRD_(sg_get_trace)())
+ {
+ char *str1, *str2;
+ str1 = DRD_(vc_aprint)(&old_vc);
+ str2 = DRD_(vc_aprint)(&DRD_(g_threadinfo)[tid].last->vc);
+ VG_(message)(Vg_DebugMsg, "thread %d: vc %s -> %s", tid, str1, str2);
+ VG_(free)(str1);
+ VG_(free)(str2);
+ }
thread_discard_ordered_segments();
DRD_(thread_update_conflict_set)(tid, &old_vc);
DRD_(vc_cleanup)(&old_vc);
@@ -1248,15 +1277,13 @@
if (s_trace_conflict_set)
{
- char msg[256];
+ char* str;
- VG_(snprintf)(msg, sizeof(msg),
- "computing conflict set for thread %d/%d with vc ",
- DRD_(DrdThreadIdToVgThreadId)(tid), tid);
- DRD_(vc_snprint)(msg + VG_(strlen)(msg),
- sizeof(msg) - VG_(strlen)(msg),
- &DRD_(g_threadinfo)[tid].last->vc);
- VG_(message)(Vg_UserMsg, "%s", msg);
+ str = DRD_(vc_aprint)(&DRD_(g_threadinfo)[tid].last->vc);
+ VG_(message)(Vg_DebugMsg,
+ "computing conflict set for thread %d/%d with vc %s",
+ DRD_(DrdThreadIdToVgThreadId)(tid), tid, str);
+ VG_(free)(str);
}
p = DRD_(g_threadinfo)[tid].last;
@@ -1265,15 +1292,12 @@
if (s_trace_conflict_set)
{
- char msg[256];
+ char* vc;
- VG_(snprintf)(msg, sizeof(msg),
- "conflict set: thread [%d] at vc ",
- tid);
- DRD_(vc_snprint)(msg + VG_(strlen)(msg),
- sizeof(msg) - VG_(strlen)(msg),
- &p->vc);
- VG_(message)(Vg_UserMsg, "%s", msg);
+ vc = DRD_(vc_aprint)(&p->vc);
+ VG_(message)(Vg_DebugMsg, "conflict set: thread [%d] at vc %s",
+ tid, vc);
+ VG_(free)(vc);
}
for (j = 0; j < DRD_N_THREADS; j++)
@@ -1288,13 +1312,13 @@
{
if (s_trace_conflict_set)
{
- char msg[256];
- VG_(snprintf)(msg, sizeof(msg),
- "conflict set: [%d] merging segment ", j);
- DRD_(vc_snprint)(msg + VG_(strlen)(msg),
- sizeof(msg) - VG_(strlen)(msg),
- &q->vc);
- VG_(message)(Vg_UserMsg, "%s", msg);
+ char* str;
+
+ str = DRD_(vc_aprint)(&q->vc);
+ VG_(message)(Vg_DebugMsg,
+ "conflict set: [%d] merging segment %s",
+ j, str);
+ VG_(free)(str);
}
DRD_(bm_merge2)(*conflict_set, DRD_(sg_bm)(q));
}
@@ -1302,13 +1326,13 @@
{
if (s_trace_conflict_set)
{
- char msg[256];
- VG_(snprintf)(msg, sizeof(msg),
- "conflict set: [%d] ignoring segment ", j);
- DRD_(vc_snprint)(msg + VG_(strlen)(msg),
- sizeof(msg) - VG_(strlen)(msg),
- &q->vc);
- VG_(message)(Vg_UserMsg, "%s", msg);
+ char* str;
+
+ str = DRD_(vc_aprint)(&q->vc);
+ VG_(message)(Vg_DebugMsg,
+ "conflict set: [%d] ignoring segment %s",
+ j, str);
+ VG_(free)(str);
}
}
}
@@ -1321,11 +1345,11 @@
s_conflict_set_bitmap2_creation_count
+= DRD_(bm_get_bitmap2_creation_count)();
- if (0 && s_trace_conflict_set)
+ if (s_trace_conflict_set_bm)
{
- VG_(message)(Vg_UserMsg, "[%d] new conflict set:", tid);
+ VG_(message)(Vg_DebugMsg, "[%d] new conflict set:", tid);
DRD_(bm_print)(*conflict_set);
- VG_(message)(Vg_UserMsg, "[%d] end of new conflict set.", tid);
+ VG_(message)(Vg_DebugMsg, "[%d] end of new conflict set.", tid);
}
}
@@ -1347,6 +1371,17 @@
tl_assert(tid == DRD_(g_drd_running_tid));
tl_assert(DRD_(g_conflict_set));
+ if (s_trace_conflict_set)
+ {
+ char* str;
+
+ str = DRD_(vc_aprint)(&DRD_(g_threadinfo)[tid].last->vc);
+ VG_(message)(Vg_DebugMsg,
+ "updating conflict set for thread %d/%d with vc %s",
+ DRD_(DrdThreadIdToVgThreadId)(tid), tid, str);
+ VG_(free)(str);
+ }
+
new_vc = &DRD_(g_threadinfo)[tid].last->vc;
DRD_(bm_unmark)(DRD_(g_conflict_set));
@@ -1368,8 +1403,29 @@
&& ! DRD_(vc_lte)(new_vc, &q->vc);
if (included_in_old_conflict_set != included_in_new_conflict_set)
{
+ if (s_trace_conflict_set)
+ {
+ char* str;
+
+ str = DRD_(vc_aprint)(&q->vc);
+ VG_(message)(Vg_DebugMsg,
+ "conflict set: [%d] merging segment %s", j, str);
+ VG_(free)(str);
+ }
DRD_(bm_mark)(DRD_(g_conflict_set), DRD_(sg_bm)(q));
}
+ else
+ {
+ if (s_trace_conflict_set)
+ {
+ char* str;
+
+ str = DRD_(vc_aprint)(&q->vc);
+ VG_(message)(Vg_DebugMsg,
+ "conflict set: [%d] ignoring segment %s", j, str);
+ VG_(free)(str);
+ }
+ }
}
}
@@ -1398,6 +1454,13 @@
s_conflict_set_combine_vc_count++;
+ if (s_trace_conflict_set_bm)
+ {
+ VG_(message)(Vg_DebugMsg, "[%d] updated conflict set:", tid);
+ DRD_(bm_print)(DRD_(g_conflict_set));
+ VG_(message)(Vg_DebugMsg, "[%d] end of updated conflict set.", tid);
+ }
+
tl_assert(thread_conflict_set_up_to_date(DRD_(g_drd_running_tid)));
}
Modified: branches/DRDDEV/drd/drd_thread.h
===================================================================
--- branches/DRDDEV/drd/drd_thread.h 2009-06-05 18:11:08 UTC (rev 10256)
+++ branches/DRDDEV/drd/drd_thread.h 2009-06-06 08:48:27 UTC (rev 10257)
@@ -116,6 +116,7 @@
void DRD_(thread_trace_context_switches)(const Bool t);
void DRD_(thread_trace_conflict_set)(const Bool t);
+void DRD_(thread_trace_conflict_set_bm)(const Bool t);
Bool DRD_(thread_get_trace_fork_join)(void);
void DRD_(thread_set_trace_fork_join)(const Bool t);
void DRD_(thread_set_segment_merging)(const Bool m);
Modified: branches/DRDDEV/drd/drd_vc.c
===================================================================
--- branches/DRDDEV/drd/drd_vc.c 2009-06-05 18:11:08 UTC (rev 10256)
+++ branches/DRDDEV/drd/drd_vc.c 2009-06-06 08:48:27 UTC (rev 10257)
@@ -253,61 +253,37 @@
char* DRD_(vc_aprint)(const VectorClock* const vc)
{
unsigned i;
- unsigned len;
+ unsigned reserved;
+ unsigned size;
char* str = 0;
tl_assert(vc);
- len = 64;
- str = VG_(realloc)("drd.vc.aprint.1", str, len);
+ reserved = 64;
+ size = 0;
+ str = VG_(realloc)("drd.vc.aprint.1", str, reserved);
if (! str)
return str;
- VG_(snprintf)(str, len, "[");
+ size += VG_(snprintf)(str, reserved, "[");
for (i = 0; i < vc->size; i++)
{
tl_assert(vc->vc);
- if (VG_(strlen)(str) + 32 > len)
+ if (VG_(strlen)(str) + 32 > reserved)
{
- len *= 2;
- str = VG_(realloc)("drd.vc.aprint.2", str, len);
+ reserved *= 2;
+ str = VG_(realloc)("drd.vc.aprint.2", str, reserved);
if (! str)
return str;
}
- VG_(snprintf)(str + VG_(strlen)(str), len - VG_(strlen)(str),
- "%s %d: %d", i > 0 ? "," : "",
- vc->vc[i].threadid, vc->vc[i].count);
+ size += VG_(snprintf)(str + size, reserved - size,
+ "%s %d: %d", i > 0 ? "," : "",
+ vc->vc[i].threadid, vc->vc[i].count);
}
- VG_(snprintf)(str + VG_(strlen)(str), len - VG_(strlen)(str), " ]");
+ size += VG_(snprintf)(str + size, reserved - size, " ]");
return str;
}
/**
- * Print the contents of vector clock 'vc' to the character array 'str' that
- * has 'size' elements.
- */
-void DRD_(vc_snprint)(Char* const str, const Int size,
- const VectorClock* const vc)
-{
- unsigned i;
- unsigned j = 1;
-
- tl_assert(vc);
- VG_(snprintf)(str, size, "[");
- for (i = 0; i < vc->size; i++)
- {
- tl_assert(vc->vc);
- for ( ; j <= vc->vc[i].threadid; j++)
- {
- VG_(snprintf)(str + VG_(strlen)(str), size - VG_(strlen)(str),
- "%s %d",
- i > 0 ? "," : "",
- (j == vc->vc[i].threadid) ? vc->vc[i].count : 0);
- }
- }
- VG_(snprintf)(str + VG_(strlen)(str), size - VG_(strlen)(str), " ]");
-}
-
-/**
* Invariant test.
*
* The function below tests whether the following two conditions are
Modified: branches/DRDDEV/drd/drd_vc.h
===================================================================
--- branches/DRDDEV/drd/drd_vc.h 2009-06-05 18:11:08 UTC (rev 10256)
+++ branches/DRDDEV/drd/drd_vc.h 2009-06-06 08:48:27 UTC (rev 10257)
@@ -89,8 +89,6 @@
const VectorClock* const rhs);
void DRD_(vc_print)(const VectorClock* const vc);
char* DRD_(vc_aprint)(const VectorClock* const vc);
-void DRD_(vc_snprint)(Char* const str, const Int size,
- const VectorClock* const vc);
void DRD_(vc_check)(const VectorClock* const vc);
void DRD_(vc_test)(void);
Modified: branches/DRDDEV/drd/tests/annotate_trace_memory.stderr.exp
===================================================================
--- branches/DRDDEV/drd/tests/annotate_trace_memory.stderr.exp 2009-06-05 18:11:08 UTC (rev 10256)
+++ branches/DRDDEV/drd/tests/annotate_trace_memory.stderr.exp 2009-06-06 08:48:27 UTC (rev 10257)
@@ -1,17 +1,17 @@
FLAGS [phb=1, fm=0]
test01: positive
-store 0x........ size 4 (vg 2 / drd 2 / vc ...)
+store 0x........ size 4 (vg 2 / drd 2 / vc [ 1: 5, 2: 1 ])
at 0x........: test01::Worker() (tsan_unittest.cpp:?)
by 0x........: MyThread::ThreadBody(MyThread*) (tsan_thread_wrappers_pthread.h:?)
-store 0x........ size 4 (vg 1 / drd 1 / vc ...)
+store 0x........ size 4 (vg 1 / drd 1 / vc [ 1: 7 ])
at 0x........: test01::Parent() (tsan_unittest.cpp:?)
by 0x........: test01::Run() (tsan_unittest.cpp:?)
Conflicting store by thread x/x at 0x........ size 4
at 0x........: test01::Parent() (tsan_unittest.cpp:?)
by 0x........: test01::Run() (tsan_unittest.cpp:?)
Allocation context: BSS section of tsan_unittest
-load 0x........ size 4 (vg 1 / drd 1 / vc ...)
+load 0x........ size 4 (vg 1 / drd 1 / vc [ 1: 8, 2: 2 ])
at 0x........: test01::Run() (tsan_unittest.cpp:?)
by 0x........: main (tsan_unittest.cpp:?)
GLOB=2
|