Comments (2)
It seems that the check in DsaLocal at line 667 is specifically made for one or several gep instructions starting from NULL
.
sea-dsa/lib/seadsa/DsaLocal.cc
Line 667 in 9d8d71a
Here the crash is acually a load of a pointer, which is obtained from a load on a GEP null, so two levels of indirection:
%arrayidx87.us = getelementptr inbounds i8*, i8** null, i64 %indvars.iv99
%arrayidx.us = bitcast i8** %arrayidx87.us to float**
%4 = load float*, float** %arrayidx.us, align 8, !tbaa !4
%6 = bitcast float* %4 to i32*
%7 = load i32, i32* %6, align 4, !tbaa !8
It is undefined behavior, but it is present due to UBSan.
I can submit a PR to fix this, but not sure what I should check, instead of simply transforming assert(!base.isNull());
into if(base.isNull()) return;
in:
sea-dsa/lib/seadsa/DsaLocal.cc
Line 699 in 9d8d71a
Probably the fix should avoid creating the null cell in the first place.
from sea-dsa.
Ok if I enable assertions with PR #131 it actually crashes on
sea-dsa/lib/seadsa/DsaLocal.cc
Line 623 in 9d8d71a
after printing as a warning: Unexpected expression at valueCell: %4 = load float*, float** %arrayidx.us, align 8, !tbaa !4
.
This while in visitBitCastInst
visiting %6 = bitcast float* %4 to i32*
with %4 = load float*, float** %arrayidx.us, align 8, !tbaa !4
from sea-dsa.
Related Issues (20)
- Problematic copy of metadata in RemovePtrToIntPass HOT 3
- Question: sea-dsa does not produce memory graph when main function has internal linkage type. HOT 4
- Disable warning messages HOT 2
- Null graph node in context insensitive analysis HOT 15
- Missing nodes for pointer variables HOT 3
- Upgrading to LLVM 11? HOT 12
- Dead link HOT 1
- Upgrade sea-dsa to support LLVM 12 HOT 1
- Selecting program entry point HOT 3
- How to query DsaInfo for Context Sentitive information HOT 6
- transfersNoPointers in DsaLocal mishandles opaque types
- Constructing paths from memory object to use-pointers HOT 1
- Question on realloc function. HOT 1
- Question about "function never returning" HOT 6
- Upgrade sea-dsa to support LLVM 13 HOT 1
- Upgrade sea-dsa to support LLVM 14 HOT 1
- README.md suggests to use `sudo pip` HOT 1
- Tea-dsa or sea-dsa? HOT 3
- CRASH: can't handle vectorTy in LoadInst / Gep
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 sea-dsa.