abseil / abseil/abseil-cpp

Is it expected such test doesn't work with sanitizer?

Abierto
#1,422 5 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
C++
Estrellas
18.1k
Forks
3.2k
Merge medio
20 h 36 min
PR fusionados (30 d)
1

Descripción

### Describe the issue

reserve to smaller than size capacity makes unsigned overflow in reset_reserved_growth
```cpp
void reset_reserved_growth(size_t reservation, size_t size) {
reserved_growth_ = reservation - size;
}
```

```cpp
TEST(Table, ReservedGrowthUpdatesWhenTableDoesntGrow2) {
IntTable t;
for (int i = 0; i < 8; ++i) t.insert(i);
// Want to insert twice without invalidating iterators so reserve.
const size_t cap = t.capacity();
t.reserve(3);
// We want to be testing the case in which the reserve doesn't grow the table.
ASSERT_EQ(cap, t.capacity());
auto it = t.find(0);
t.insert(100);
t.insert(200);
t.insert(300);
// `it` should have been invalidated.
EXPECT_EQ(*it, 0); // should be some expect_death
}
```

Is it expected?

### Steps to reproduce the problem

Run test

### What version of Abseil are you using?

master

### What operating system and version are you using?

Linux 6.2.6-arch1-1

### What compiler and version are you using?

clang version 15.0.7
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-linux-gnu/12.2.1
Found candidate GCC installation: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/12.2.1
Selected GCC installation: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/12.2.1
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64

### What build system are you using?

cmake version 3.26.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).

### Additional context

I think fix should be like make reset_reserved_growth call inside raw_hash_set::resize
https://github.com/abseil/abseil-cpp/pull/1423

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.