avast / avast/retdec

Differences in the generated LLVM IR in regression tests between Linux and macOS

Open
#267 1 comment 0 reactions 0 assignees View on GitHub
bug C-regression-tests O-macos
Dominant language
C++
Stars
8.6k
Forks
1k
PR merge metrics
No merged PRs in 30d

Description

There are many differences in the generated LLVM IR in regression tests between Linux and macOS.

## Input

Run all of our regression tests via [our testing framework](https://github.com/avast-tl/retdec-regression-tests-framework):
```
$ runner.py
```
Do this on both Linux and macOS.

## Output

When you compare the generated `.c.backend.ll` files in the `output` directories, there are many differences between Linux and macOS.

For example, [here](https://github.com/avast-tl/retdec/files/1866139/my-printf-decompilation-quality.zip) are outputs from the `bugs.my-printf-decompilation-quality` test. When you diff them, there are many differences, including different sizes of arrays, different order of basic blocks, and even different instructions.

## Expected output

The generated LLVM IR should be the same, regardless of the used system.

## Notes

Possibly related issues:
* #266 (the `bugs.my-printf-decompilation-quality` test is one of the timeouting ones on macOS)
* #209 (non-determinism in our tools)

## Configuration

* Commit: ae9a6d412caf73f1c93c7012a6f799de0cc95cdb (current `master`)
* 64b Arch Linux, GCC 7.3.1, Release build of RetDec
* mac OS 10.13, Apple LLVM version 9.0.0, Release build of RetDec

Contributor guide

No contributing guide indexed for this repository

Research direction

Run runner.py from the retdec-regression-tests-framework on both Linux and macOS, using the stated commit and release configurations. Compare the generated .c.backend.ll files in the output directories, starting with bugs.my-printf-decompilation-quality and considering the related issues #266 and #209; done means the generated LLVM IR is the same on both systems.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
compilers, reverse-engineering, testing
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.