facebook / facebook/zstd

The dict trainer fails with SIGSEGV or floating point exception

Open
#3,599 3 comments 1 reaction 0 assignees View on GitHub
Dominant language
C
Stars
27.9k
Forks
2.6k
Avg merge
1d 3h
Merged PRs (30d)
8

Description

**Describe the bug**
The dict trainer fails with SIGSEGV or floating point exception

**To Reproduce**
```
#include
#include

const char * samples = "0123456789abcdefghij";
const size_t sizes[20] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
const size_t dict_size = 1024;
const size_t n = 10;

int main() {
void * dict = malloc(dict_size);
ZDICT_trainFromBuffer(dict, dict_size, samples, sizes, n);
}
```

For n < 10 it fails with `segmentation fault` for n = 10 it fails with `floating point exception`

**Expected behavior**
not to fail, returning error code for not being able to build a dict is expected also.

**Desktop (please complete the following information):**
- OS: Linux, Ubuntu-20.4
- Version: linux-5.15, libc6-2.31
- Compiler: gcc (9, 10), clang-13
- Build system: `gcc -g -Wall -o zstd_test zstd_test.c -lzstd`
- zstd versions tested: 1.5.2 and 1.5.5
-
**Additional context**
Reported in https://github.com/luben/zstd-jni/issues/253

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.