Comments (3)
Thanks for the detailed bug report!
It was indeed an infinite loop caused by an impossible CFG. Which in turn was caused by a leading unreachable exit
instruction at the beginning of the program, shifting all basic blocks of the first function by one.
from rbpf.
One can attach a debugger and see the program spends time searching something. Looks like it entered a forever loop.
* thread #1, name = 'rbpf_cli', stop reason = signal SIGSTOP
frame #0: 0x000055c2b033011c rbpf_cli`alloc::collections::btree::search::_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$$GT$::find_key_index::h6a386a2ad93b0899(self=0x00007ffe74b82f10, key=0x00007ffe74b83308) at search.rs:206:17
203 let keys = node.keys();
204 for (i, k) in keys.iter().enumerate() {
205 match key.cmp(k.borrow()) {
-> 206 Ordering::Greater => {}
207 Ordering::Equal => return IndexResult::KV(i),
208 Ordering::Less => return IndexResult::Edge(i),
209 }
Executable module set to "target/debug/rbpf_cli".
Architecture set to: x86_64-pc-linux-gnu.
from rbpf.
rustup show
Default host: x86_64-unknown-linux-gnu
installed toolchains
--------------------
stable-x86_64-unknown-linux-gnu (default)
bpf
active toolchain
----------------
stable-x86_64-unknown-linux-gnu (default)
rustc 1.52.1 (9bc8c42bb 2021-05-09)
from rbpf.
Related Issues (20)
- The new ELF parser should use checked instead of saturating arithmetic
- elf: retrieve all dynamic metadata from the `.dynamic` table instead of requiring section headers
- JitCompiler::new() uses unwrap()
- Read only sections can overlap with the stack
- eBPF Standardization HOT 2
- Call target labels are not resolved in v0.2.38 HOT 4
- 32bit target support HOT 2
- ExceededMaxInstructions error message is confusing HOT 1
- Only require winapi on Windows
- git clone and cargo build gives error HOT 3
- elf_parser fails loading a valid ELF file HOT 8
- Call instruction transfers control to incorrect address HOT 4
- RBPF is killed by the OS while running a program HOT 2
- make btf instruction class an enum
- Attempt to negate with overflow in disassembler
- Warnings when compiling on macOS Arm
- Removing check SHIFT immediate number from verifier HOT 2
- assembler: register inconsistency HOT 3
- Interpreter LD_DW_IMM: add `!sbpf_version.disable_lddw()` checking
- type casting of rbpf HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rbpf.