Bug 3897 – Sporadic incorrectness with builtin AAs
Status
RESOLVED
Resolution
INVALID
Severity
regression
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
Other
OS
Windows
Creation time
2010-03-08T06:38:00Z
Last change time
2014-02-15T02:43:45Z
Assigned to
nobody
Creator
dsimcha
Comments
Comment #0 by dsimcha — 2010-03-08T06:38:43Z
Here's about the best I can do to reproduce this issue. It showed up in a monte carlo unittest of one of my associative array implementations that tested whether it gets the same answers as the builtin implementation. Probably some subtle memory corruption issue.
import std.stdio, std.random, std.conv;
void main() {
// Monte carlo unit test builtin hash table.
uint[uint] table;
auto gen = Random(42);
foreach(i; 0..1_000_000) {
auto num1 = gen.front();
gen.popFront();
auto num2 = gen.front();
gen.popFront();
table[num1] = num2;
}
// Note that we're using the same seed again.
gen = Random(42);
foreach(i; 0..1_000_000) {
auto num1 = gen.front();
gen.popFront();
auto num2 = gen.front();
gen.popFront();
assert(num1 in table);
assert(table[num1] == num2);
}
}
Comment #1 by dsimcha — 2010-03-08T06:54:19Z
Never mind. I filed this report in a hurry. While I still think something screwy is going on with the builtin AAs, this is not a valid way to reproduce it. Will file a new report when I have more time to look into the problem.