Closed jdomke closed 3 years ago
Hi Jens, thanks for the issue and also for the bugfix in the new version ;) I could reproduce the error and it happens in the NetworkX module function for calculating the dependency paths throughout the kernel, so it might be a bug in their code. I will have a deeper look at it over the weekend and will try to come up with a fix!
Hi @jdomke, I dug a bit deeper and the good news are: It's no lifelock. On the other hand the resulting bad news are: The creation time of all possible path throughout the kernel graph increases tremendously with a growing number of edges.
In your special case, the last 6 instructions starting from vmovd %xmm7,%ecx
create a dependency on ecx
which is used in the beginning of our kernel and throughout it for multiple memory addressing operations. So running OSACA with --lines 0-185
on my PC takes about 6s, but as soon as you add the next line, we are getting in this lifelock-similiar state of almost endless computation.
Since your code does not look like an actual loop, a LCD analysis seems not to be necessary, so we added multiple enhancements which hopefully also meet your requirements:
--lcd-timeout TIME
you can choose manually a timeout threshold (in seconds) in case you really want keep it running for a longer time - or use -1
for no timeout.Those features are included in the latest release (0.4.1
). Feel free to re-open this issue in case this is not sufficient and we can think about other solutions!
Hi, i have an asm sequence which forces osaca into a lifelock. I tried runnig with python -m trace to find out whats wrong, but had no luck pinpointing the issue without deep knowledge about the osaca internals, so I have to hand it of to you.
The problem exists in osaca-0.3.14 and osaca-0.4.0 (for latter: after fixing the parser bug at semantics/kernel_dg.py line 316 which prevents using hex for callq and other instructions).
My call: python3 -m osaca --arch BDW --ignore-unknown --verbose /dev/shm/osaca_43305_556_575.s