Closed shachaf closed 4 years ago
I was testing this library and I ran into a segmentation fault. Here's a program that reproduces it:
$ cat alex-test.cc #include <stdio.h> #include "ALEX/src/core/alex_map.h" int main(int argc, char **argv) { alex::AlexMap<uint64_t, uint64_t> map; FILE *f = fopen("alex-test-input.txt", "r"); while (1) { char buf[100]; char *line = fgets(buf, sizeof buf, f); if (!line) break; uint64_t key; if (line[0] == 'a') { sscanf(line, "a %lu", &key); printf("assign %lu\n", key); map[key] = 0; } else if (line[0] == 'd') { sscanf(line, "d %lu", &key); auto it = map.find(key); if (!it.is_end()) { printf("delete %lu\n", key); map.erase(it); } else { printf("!found %lu\n", key); } } } return 0; } $ clang++ -g alex-test.cc -o build/alex-test -march=haswell && ./build/alex-test > /dev/null Segmentation fault
Here's a stack trace:
#0 0x000000000040a456 in alex::Alex<unsigned long, unsigned long, alex::AlexCompare, std::allocator<std::pair<unsigned long, unsigned long> >, false>::expand_root ( this=0x7fffffffdb10, expand_left=true) at ./ALEX/src/core/alex.h:1454 #1 0x00000000004081f8 in alex::Alex<unsigned long, unsigned long, alex::AlexCompare, std::allocator<std::pair<unsigned long, unsigned long> >, false>::insert (this=0x7fffffffdb10, key=@0x7fffffffda80: 9178834004329713693, payload=@0x7fffffffd9d8: 0) at ./ALEX/src/core/alex.h:1117 #2 0x000000000040327d in alex::AlexMap<unsigned long, unsigned long, alex::AlexCompare, std::allocator<std::pair<unsigned long, unsigned long> > >::operator[] ( this=0x7fffffffdb10, key=@0x7fffffffda80: 9178834004329713693) at ./ALEX/src/core/alex_map.h:128 #3 0x0000000000401640 in main (argc=1, argv=0x7fffffffdce8) at alex-test.cc:18
Here's the test input: https://slbkbs.org/tmp/alex-test-input.txt
I was testing this library and I ran into a segmentation fault. Here's a program that reproduces it:
Here's a stack trace:
Here's the test input: https://slbkbs.org/tmp/alex-test-input.txt