-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Assertion failed 'data->GetRegNum() != REG_WRITE_BARRIER_DST' #77143
Comments
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue Detailsruntime-coreclr libraries-pgo This has hit at least twice in System.Runtime.Serialization.Xml.ReflectionOnly.Tests, but that test run usually hits #75827. https://dev.azure.com/dnceng-public/public/_build/results?buildId=52661&view=results https://dev.azure.com/dnceng-public/public/_build/results?buildId=52628&view=results
cc @dotnet/jit-contrib
|
Haven't seen this recently. This and #77141 might have been fixed by something. Will removing blocking label for now and keep monitoring. |
This reproed again this Sunday: Unfortunately I still haven't been able to get a repro of this. |
I was finally able to get a repro by setting Attached an SPMI context that repros it with unix-x64 JIT on commit dfe1076. |
Seems like LSRA gives an illegal register assignment: N3111 ( 3, 10) [003011] H---------Z t3011 = CNS_INT(h) ref REG rsi $b16
┌──▌ t3011 ref
[004437] ----------- t4437 = ▌ RELOAD ref REG rdi
N3113 ( 3, 10) [001640] H---------- t1640 = CNS_INT(h) long 0x7f7ee0008440 static Fseq[<unknown field>] REG rsi $b14
┌──▌ t1640 long
├──▌ t4437 ref
N3115 (???,???) [003877] -A--G------ ▌ STOREIND ref REG NA The address is t1640, i.e. a constant. It is put into rsi, while the data, t4437, is put into rdi. But the write needs a write barrier, and the write barrier expects the address in |
The problem is that 48BEE8086F5BBF7F0000 mov rsi, 0x7FBF5B6F08E8
4889B570FEFFFF mov gword ptr [rbp-190H], rsi
48BE408400E07E7F0000 mov rsi, 0x7F7EE0008440 ; data for <unknown class>:<unknown field>
488BBD70FEFFFF mov rdi, gword ptr [rbp-190H]
48893E mov gword ptr [rsi], rdi cc @kunalspathak, the SPMI context above provides the repro case. There's some reuse of constants, maybe that's related. [003011] 3112.#2455 C501 Def Alloc rsi │ │V116a│ │V4 a│ │ │ │ │ │V117a│V2 a│V34 a│V3 a│V1 a│
Spill rsi │ │V116a│ │V4 a│ │ │ │ │ │V117a│V2 a│V34 a│V3 a│V1 a│
[001640] 3114.#2456 C502 Def Alloc rsi │ │V116a│ │V4 a│C502a│ │ │ │ │V117a│V2 a│V34 a│V3 a│V1 a│
[003877] 3115.#2457 C502 Use * Keep rsi │ │V116a│ │V4 a│C502i│ │ │ │ │V117a│V2 a│V34 a│V3 a│V1 a│
3115.#2458 C501 Use * ReLod rdi │ │V116a│ │V4 a│ │C501a│ │ │ │V117a│V2 a│V34 a│V3 a│V1 a│
Keep rdi │ │V116a│ │V4 a│ │C501i│ │ │ │V117a│V2 a│V34 a│V3 a│V1 a│
[003012] 3120.#2459 C503 Def Reuse rdi │ │V116a│ │V4 a│ │C503a│ │ │ │V117a│V2 a│V34 a│V3 a│V1 a│
[001644] 3121.#2460 C503 Use * Keep rdi │ │V116a│ │V4 a│ │C503i│ │ │ │V117a│V2 a│V34 a│V3 a│V1 a│ |
gcIsWriteBarrierCandidate is expected to return the same results during LSRA and during codegen, so it needs to skip GT_COPY and GT_RELOAD inserted on top of the data node. Fix dotnet#77141 Fix dotnet#77143
runtime-coreclr libraries-pgo
Libraries Test Run checked coreclr Linux x64 Release
This has hit at least twice in System.Runtime.Serialization.Xml.ReflectionOnly.Tests, but that test run usually hits #75827.
https://dev.azure.com/dnceng-public/public/_build/results?buildId=52661&view=results
https://helix.dot.net/api/2019-06-17/jobs/6e3b9174-8eec-4bbf-8302-0033b34d4120/workitems/System.Runtime.Serialization.Xml.ReflectionOnly.Tests/console
https://dev.azure.com/dnceng-public/public/_build/results?buildId=52628&view=results
https://helix.dot.net/api/2019-06-17/jobs/fd3be114-dde0-4513-92ce-def4be1c2535/workitems/System.Runtime.Serialization.Xml.ReflectionOnly.Tests/console
cc @dotnet/jit-contrib
The text was updated successfully, but these errors were encountered: