-
Notifications
You must be signed in to change notification settings - Fork 180
BOLT-CoreDump: assert failed in long-jmp stage on aarch64 platform #206
Comments
@Haishan312 Hello. Could you please check the issue on the latest bolt? I believe it would be fixed. Thank you! |
Not yet, I got another core. may be relative with island PR (abf5b7e)
|
@Haishan312 The PR indeed has a problem, I already fixed that in #228 it is currently on review |
Hello @Haishan312 . The fix was merge, I think now it should be OK :) |
@yota9 it works, but in emit instruction stage, I still get a core, Maybe add a mov instruction for a big immediate into register, it will be fixed absolutely. because the immediate is bigger than int<28>. |
@Haishan312 Interesting.. Could you please give the log? How big is the binary? Is it exec or dyn? Probably it is exec, we don not support all of the possible relocations now, like the AARCH64_MOVW_UABS_G* I've added recently. |
@yota9 Yes, it is executable binary, and its size more than 2G. If I set split-function=0, bolt works fine.
|
@Haishan312 Hm interesting, one of the branches seems to be not relaxed. I will fix couple of small issues soon, but I don't think I can blame them in it.. Is it possible to get binary in profile file that you are using? |
@yota9 This instruction( b SYMBOLat0x1a6bcf0 # TAILCALL) is inserted in longjump pass. |
@Haishan312 Interesting, it seems to be stub not relaxed properly.. I've created new PR #241 , it also fixes minor problem with function alignment. And as far as I see the longjmp pass currently does not take into account basic block alignment, do you use AlignBlocks or PreserveBlocksAlignment ooption? |
@yota9 That's great. I doesn't use |
@Haishan312
So does it work now? :) |
Not yet, I get same core when I add "--align-blocks" |
It is expectedly, as I said align-blocks does not work now (I'm not sure will I fix it or not). If it works without align-blocks I purpose to close the issue, I will open new one with align-blocks problem. |
@yota9 hello, I also encount the same issue when try to instrument big binary. it seems to be stub not relaxed properly. |
Hello @dongjianqiang2 ! I'm trying to fix it from time to time, recently new patches were merged and one of them is currently on the review https://reviews.llvm.org/D122039. Please try to apply it to the latest bolt version from the llvm repo https://github.com/llvm/llvm-project. If it won't help please let me see the binary if it is possible. Thank you! |
Hi,
thanks firstly.
using llvm-bolt(lastest main branch) to generate optimal binary for aarch64.
Then I get assert failed in long-jmp pass.
this assert failure show we can't insert new tailcall basicblock in CFG_Finalized stage.
Therefore, I update state of Function, and this assert failure is gone.
and new basic block information:
But in the later emit-link stage, I encounted another assert failure.
This assert failure show that address of new basic block overflow.
So how to insert stub basciblock correctly, when input a larger binary for llvm-bolt?
The text was updated successfully, but these errors were encountered: