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
(2) |
2
|
|
3
(9) |
4
(9) |
5
(16) |
6
(13) |
7
(12) |
8
(11) |
9
(6) |
|
10
|
11
(23) |
12
(31) |
13
(20) |
14
(7) |
15
|
16
(9) |
|
17
(2) |
18
(1) |
19
(12) |
20
(9) |
21
(8) |
22
(14) |
23
(2) |
|
24
(9) |
25
(11) |
26
(17) |
27
(14) |
28
(38) |
29
(25) |
30
(15) |
|
31
(8) |
|
|
|
|
|
|
|
From: Christian B. <bor...@de...> - 2011-07-03 20:39:23
|
Nightly build on fedora390 ( Fedora 13/14/15 mix with gcc 3.5.3 on z196 (s390x) ) Started at 2011-07-03 22:10:01 CEST Ended at 2011-07-03 22:38:30 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 486 tests, 12 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) drd/tests/tc23_bogus_condwait (stderr) |
|
From: Christian B. <bor...@de...> - 2011-07-03 20:37:20
|
Nightly build on sless390 ( SUSE Linux Enterprise Server 11 SP1 gcc 4.3.4 on z196 (s390x) ) Started at 2011-07-03 22:10:01 CEST Ended at 2011-07-03 22:37:05 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 486 tests, 13 stderr failures, 0 stdout failures, 7 stderrB failures, 1 stdoutB failure, 0 post failures == gdbserver_tests/mcbreak (stderrB) gdbserver_tests/mcclean_after_fork (stderrB) gdbserver_tests/mcleak (stderrB) gdbserver_tests/mcmain_pic (stdoutB) gdbserver_tests/mcmain_pic (stderrB) gdbserver_tests/mssnapshot (stderrB) gdbserver_tests/nlpasssigalrm (stderrB) gdbserver_tests/nlsigvgdb (stderrB) none/tests/faultstatus (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) drd/tests/tc23_bogus_condwait (stderr) |
|
From: <sv...@va...> - 2011-07-03 16:47:52
|
Author: bart Date: 2011-07-03 17:43:01 +0100 (Sun, 03 Jul 2011) New Revision: 11852 Log: Update Subversion ignore lists Modified: trunk/gdbserver_tests/ trunk/helgrind/tests/ trunk/memcheck/tests/ Property changes on: trunk/gdbserver_tests ___________________________________________________________________ Name: svn:ignore - *.diff *.out .deps clean_after_fork detailed gdb gdb.eval Makefile Makefile.in progB.done sleepers t vgdb vgdb.ptraceinvoker watchpoints + *.diff *.out .deps clean_after_fork detailed fork_chain gdb gdb.eval gdb.step main_pic Makefile Makefile.in passsigalrm progB.done sleepers t vgdb vgdb.ptraceinvoker watchpoints Property changes on: trunk/helgrind/tests ___________________________________________________________________ Name: svn:ignore - *.dSYM *.stderr.diff* *.stderr.out *.stdout.diff* *.stdout.out .deps annotate_hbefore annotate_rwlock bar_bad bar_trivial free_is_write 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 annotate_hbefore annotate_rwlock bar_bad bar_trivial free_is_write hg01_all_ok hg02_deadlock hg03_inherit hg04_race hg05_race2 hg06_readshared locked_vs_unlocked1 locked_vs_unlocked2 locked_vs_unlocked3 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 Property changes on: trunk/memcheck/tests ___________________________________________________________________ Name: svn:ignore - *.dSYM *.stderr.diff* *.stderr.out *.stdout.diff* *.stdout.out .deps addressable atomic_incs badaddrvalue badfree badjump badjump2 badloop badpoll badrw brk brk2 buflen_check calloc-overflow clientperm clientstackperm custom-overlap 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-supps 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 mempool2 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 addressable atomic_incs badaddrvalue badfree badjump badjump2 badloop badpoll badrw brk brk2 buflen_check calloc-overflow clientperm clientstackperm custom-overlap 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-delta leak-pool leak-regroot leak-tree leakotron linux-capget linux-syscalls-2007 linux-syslog-syscall linux-timerfd-syscall long-supps 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 mempool2 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 |
|
From: <sv...@va...> - 2011-07-03 11:48:34
|
Author: bart
Date: 2011-07-03 12:43:45 +0100 (Sun, 03 Jul 2011)
New Revision: 11851
Log:
drd: Source code cleanup - merge two blocks of tracing code
Modified:
trunk/drd/drd_thread.c
Modified: trunk/drd/drd_thread.c
===================================================================
--- trunk/drd/drd_thread.c 2011-07-03 11:42:03 UTC (rev 11850)
+++ trunk/drd/drd_thread.c 2011-07-03 11:43:45 UTC (rev 11851)
@@ -1515,31 +1515,19 @@
const Bool included_in_new_conflict_set
= ! DRD_(vc_lte)(&q->vc, new_vc)
&& ! 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;
+ if (s_trace_conflict_set) {
+ char* str;
- str = DRD_(vc_aprint)(&q->vc);
- VG_(message)(Vg_DebugMsg,
- "conflict set: [%d] merging segment %s\n", j, str);
- VG_(free)(str);
- }
- DRD_(bm_mark)(DRD_(g_conflict_set), DRD_(sg_bm)(q));
+ str = DRD_(vc_aprint)(&q->vc);
+ VG_(message)(Vg_DebugMsg,
+ "conflict set: [%d] %s segment %s\n", j,
+ included_in_old_conflict_set
+ != included_in_new_conflict_set
+ ? "merging" : "ignoring", str);
+ VG_(free)(str);
}
- else
- {
- if (s_trace_conflict_set)
- {
- char* str;
-
- str = DRD_(vc_aprint)(&q->vc);
- VG_(message)(Vg_DebugMsg,
- "conflict set: [%d] ignoring segment %s\n", j, str);
- VG_(free)(str);
- }
- }
+ if (included_in_old_conflict_set != included_in_new_conflict_set)
+ DRD_(bm_mark)(DRD_(g_conflict_set), DRD_(sg_bm)(q));
}
}
|
|
From: <sv...@va...> - 2011-07-03 11:46:53
|
Author: bart
Date: 2011-07-03 12:42:03 +0100 (Sun, 03 Jul 2011)
New Revision: 11850
Log:
drd: Source code cleanup - outdent a code block
Modified:
trunk/drd/drd_bitmap.c
Modified: trunk/drd/drd_bitmap.c
===================================================================
--- trunk/drd/drd_bitmap.c 2011-07-03 11:41:27 UTC (rev 11849)
+++ trunk/drd/drd_bitmap.c 2011-07-03 11:42:03 UTC (rev 11850)
@@ -1051,12 +1051,8 @@
(bm2r = VG_(OSetGen_Next)(bmr->oset)) != 0;
)
{
- /*if (DRD_(bm_has_any_access(bmr, make_address(bm2r->addr, 0),
- make_address(bm2r->addr + 1, 0))))*/
- {
- bm2l = bm2_lookup_or_insert(bml, bm2r->addr);
- bm2l->recalc = True;
- }
+ bm2l = bm2_lookup_or_insert(bml, bm2r->addr);
+ bm2l->recalc = True;
}
}
|
|
From: <sv...@va...> - 2011-07-03 11:46:18
|
Author: bart
Date: 2011-07-03 12:41:27 +0100 (Sun, 03 Jul 2011)
New Revision: 11849
Log:
drd: Simplify a boolean expression
Modified:
trunk/drd/drd_thread.h
Modified: trunk/drd/drd_thread.h
===================================================================
--- trunk/drd/drd_thread.h 2011-07-03 11:40:49 UTC (rev 11848)
+++ trunk/drd/drd_thread.h 2011-07-03 11:41:27 UTC (rev 11849)
@@ -210,9 +210,9 @@
Bool DRD_(IsValidDrdThreadId)(const DrdThreadId tid)
{
return (0 <= (int)tid && tid < DRD_N_THREADS && tid != DRD_INVALID_THREADID
- && ! (DRD_(g_threadinfo)[tid].vg_thread_exists == False
- && DRD_(g_threadinfo)[tid].posix_thread_exists == False
- && DRD_(g_threadinfo)[tid].detached_posix_thread == False));
+ && (DRD_(g_threadinfo)[tid].vg_thread_exists
+ || DRD_(g_threadinfo)[tid].posix_thread_exists
+ || DRD_(g_threadinfo)[tid].detached_posix_thread));
}
/** Returns the DRD thread ID of the currently running thread. */
|
|
From: <sv...@va...> - 2011-07-03 11:45:39
|
Author: bart
Date: 2011-07-03 12:40:49 +0100 (Sun, 03 Jul 2011)
New Revision: 11848
Log:
drd: Source code cleanup - change two variables from int to bool and outdent one code block
Modified:
trunk/drd/drd_thread.c
Modified: trunk/drd/drd_thread.c
===================================================================
--- trunk/drd/drd_thread.c 2011-07-03 11:39:30 UTC (rev 11847)
+++ trunk/drd/drd_thread.c 2011-07-03 11:40:49 UTC (rev 11848)
@@ -1509,10 +1509,10 @@
for (q = DRD_(g_threadinfo)[j].last; q; q = q->prev)
{
- const int included_in_old_conflict_set
+ const Bool included_in_old_conflict_set
= ! DRD_(vc_lte)(&q->vc, old_vc)
&& ! DRD_(vc_lte)(old_vc, &q->vc);
- const int included_in_new_conflict_set
+ const Bool included_in_new_conflict_set
= ! DRD_(vc_lte)(&q->vc, new_vc)
&& ! DRD_(vc_lte)(new_vc, &q->vc);
if (included_in_old_conflict_set != included_in_new_conflict_set)
@@ -1546,19 +1546,17 @@
DRD_(bm_clear_marked)(DRD_(g_conflict_set));
p = DRD_(g_threadinfo)[tid].last;
+ for (j = 0; j < DRD_N_THREADS; j++)
{
- for (j = 0; j < DRD_N_THREADS; j++)
+ if (j != tid && DRD_(IsValidDrdThreadId)(j))
{
- if (j != tid && DRD_(IsValidDrdThreadId)(j))
+ Segment* q;
+ for (q = DRD_(g_threadinfo)[j].last; q; q = q->prev)
{
- Segment* q;
- for (q = DRD_(g_threadinfo)[j].last; q; q = q->prev)
+ if (! DRD_(vc_lte)(&q->vc, &p->vc)
+ && ! DRD_(vc_lte)(&p->vc, &q->vc))
{
- if (! DRD_(vc_lte)(&q->vc, &p->vc)
- && ! DRD_(vc_lte)(&p->vc, &q->vc))
- {
- DRD_(bm_merge2_marked)(DRD_(g_conflict_set), DRD_(sg_bm)(q));
- }
+ DRD_(bm_merge2_marked)(DRD_(g_conflict_set), DRD_(sg_bm)(q));
}
}
}
|
|
From: <sv...@va...> - 2011-07-03 11:44:23
|
Author: bart
Date: 2011-07-03 12:39:30 +0100 (Sun, 03 Jul 2011)
New Revision: 11847
Log:
drd: Add an assert statement
Modified:
trunk/drd/drd_thread.c
Modified: trunk/drd/drd_thread.c
===================================================================
--- trunk/drd/drd_thread.c 2011-07-03 11:24:41 UTC (rev 11846)
+++ trunk/drd/drd_thread.c 2011-07-03 11:39:30 UTC (rev 11847)
@@ -1496,6 +1496,7 @@
}
new_vc = &DRD_(g_threadinfo)[tid].last->vc;
+ tl_assert(DRD_(vc_lte)(old_vc, new_vc));
DRD_(bm_unmark)(DRD_(g_conflict_set));
|
|
From: <sv...@va...> - 2011-07-03 11:29:31
|
Author: bart
Date: 2011-07-03 12:24:41 +0100 (Sun, 03 Jul 2011)
New Revision: 11846
Log:
drd: remove a duplicate tl_assert() statement.
Modified:
trunk/drd/drd_bitmap.c
Modified: trunk/drd/drd_bitmap.c
===================================================================
--- trunk/drd/drd_bitmap.c 2011-06-28 23:37:01 UTC (rev 11845)
+++ trunk/drd/drd_bitmap.c 2011-07-03 11:24:41 UTC (rev 11846)
@@ -1080,8 +1080,6 @@
struct bitmap2* bm2l;
struct bitmap2* bm2r;
- tl_assert(lhs != rhs);
-
/*
* It's not possible to have two independent iterators over the same OSet,
* so complain if lhs == rhs.
|