In the attached test case, we create a set of data that abides by some simple conditions. We set up a join to look for entries that don't abide by those conditions and unexpectedly, we see matches. The matches disappear when we use don't use bloom filters. The matches disappear when we size the bloom filters much bigger than the data set. More matches appear when we size the bloom filters much smaller than the data set. A reasonable guess is that the logic that deals with bloom filter false positives is incorrect. In this example, bloom filters are combined, so that may be a factor.
The test case is written to be built under test/csuite. It uses transactions, which not necessary to show the problem.