[Bug 1979054] Re: gcc crashes on LP, needs updating
Bug Watch Updater
1979054 at bugs.launchpad.net
Tue Jun 21 13:31:50 UTC 2022
Launchpad has imported 7 comments from the remote bug at
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105936.
If you reply to an imported comment from within Launchpad, your comment
will be sent to the remote bug automatically. Read more about
Launchpad's inter-bugtracker facilities at
https://help.launchpad.net/InterBugTracking.
------------------------------------------------------------------------
On 2022-06-12T13:03:32+00:00 stsp wrote:
Created attachment 53124
pre-processed source
The problem happens with 9.4.0
in ubuntu-20, and with more recent
gcc in ubuntu-21.10, but not sure
what exact version of gcc is there.
$ gcc -O2 -c -xc int.E
during RTL pass: sched2
/<<PKGBUILDDIR>>/build/../src/base/core/int.c: In function ‘int33_unrevect_fixup’:
/<<PKGBUILDDIR>>/build/../src/base/core/int.c:1746:1: internal compiler error: in move_insn, at haifa-sched.c:5463
Reply at:
https://bugs.launchpad.net/ubuntu/+source/gcc-10/+bug/1979054/comments/0
------------------------------------------------------------------------
On 2022-06-12T17:33:47+00:00 Pinskia wrote:
Reduced testcase:
typedef struct {
unsigned short offset;
unsigned short segment;
} far_t;
extern __thread int vm86u[8];
int int33_hooked;
int is_revectored(void);
void log_printf(void);
far_t int33_unrevect(unsigned short gg)
{
far_t ret = {};
if (int33_hooked)
return ret;
if (is_revectored())
{
log_printf();
__asm__ __volatile__("" : :"m" (vm86u[0]));
}
else
{
if (gg)
log_printf();
}
ret.segment = 0x0f000;
ret.offset = 0xf847;
return ret;
}
Reply at:
https://bugs.launchpad.net/ubuntu/+source/gcc-10/+bug/1979054/comments/1
------------------------------------------------------------------------
On 2022-06-12T17:35:58+00:00 Pinskia wrote:
Note my reduced testcase fails on 11.2.0 but passes on both 10.x and
11.3.0. So I might have reduced it to the wrong one.
Reply at:
https://bugs.launchpad.net/ubuntu/+source/gcc-10/+bug/1979054/comments/2
------------------------------------------------------------------------
On 2022-06-13T07:41:11+00:00 Ubizjak wrote:
For some reason, split1 pass converts (insn):
(insn 54 51 109 9 (parallel [
(asm_operands/v ("btrl %1,%0") ("") 0 [
(mem/c:BLK (plus:DI (plus:DI (unspec:DI [
(const_int 0 [0])
] UNSPEC_TP)
(reg:DI 100))
(const_int 96 [0x60])) [21 MEM[(struct revectored_struct *)&vm86u + 96B]+0 S32 A32])
(reg:SI 101)
]
[
(asm_input:BLK ("m") ../../../src/include/cpu.h:355)
(asm_input:SI ("r") ../../../src/include/cpu.h:355)
]
[] ../../../src/include/cpu.h:355)
(clobber (reg:CC 17 flags))
]) "../../../src/include/cpu.h":355:2 -1
(expr_list:REG_DEAD (reg:SI 101)
(expr_list:REG_DEAD (reg:DI 100)
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil)))))
to (jump_insn):
(jump_insn 111 51 113 9 (parallel [
(asm_operands/v ("btrl %1,%0") ("") 0 [
(mem/c:BLK (plus:DI (reg:DI 100)
(const_int 96 [0x60])) [21 MEM[(struct revectored_struct *)&vm86u + 96B]+0 S32 A32 AS1])
(reg:SI 101)
]
[
(asm_input:BLK ("m") ../../../src/include/cpu.h:355)
(asm_input:SI ("r") ../../../src/include/cpu.h:355)
]
[] ../../../src/include/cpu.h:355)
(clobber (reg:CC 17 flags))
]) "../../../src/include/cpu.h":355:2 -1
(nil))
This confuses sched2 pass.
Reply at:
https://bugs.launchpad.net/ubuntu/+source/gcc-10/+bug/1979054/comments/3
------------------------------------------------------------------------
On 2022-06-13T09:19:04+00:00 Ubizjak wrote:
Digging a bit further with current gcc-10 branch...
Instrumenting a TLS address splitter in i386.md with some creative
printfs:
(define_split
[(match_operand 0 "tls_address_pattern")]
"TARGET_TLS_DIRECT_SEG_REFS"
[(match_dup 0)]
{
debug_rtx (curr_insn);
debug_rtx (operands[0]);
printf ("%s\n", GET_RTX_NAME (classify_insn (operands[0])));
operands[0] = ix86_rewrite_tls_address (operands[0]);
debug_rtx (operands[0]);
printf ("%s\n", GET_RTX_NAME (classify_insn (operands[0])));
})
we get:
(insn 54 51 109 9 (parallel [
(asm_operands/v ("btrl %1,%0") ("") 0 [
(mem/c:BLK (plus:DI (plus:DI (unspec:DI [
(const_int 0 [0])
] UNSPEC_TP)
(reg:DI 100))
(const_int 96 [0x60])) [21 MEM[(struct revectored_struct *)&vm86u + 96B]+0 S32 A32])
(reg:SI 101)
]
[
(asm_input:BLK ("m") ../../../src/include/cpu.h:355)
(asm_input:SI ("r") ../../../src/include/cpu.h:355)
]
[] ../../../src/include/cpu.h:355)
(clobber (reg:CC 17 flags))
]) "../../../src/include/cpu.h":355:2 -1
(expr_list:REG_DEAD (reg:SI 101)
(expr_list:REG_DEAD (reg:DI 100)
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil)))))
(parallel [
(asm_operands/v ("btrl %1,%0") ("") 0 [
(mem/c:BLK (plus:DI (plus:DI (unspec:DI [
(const_int 0 [0])
] UNSPEC_TP)
(reg:DI 100))
(const_int 96 [0x60])) [21 MEM[(struct revectored_struct *)&vm86u + 96B]+0 S32 A32])
(reg:SI 101)
]
[
(asm_input:BLK ("m") ../../../src/include/cpu.h:355)
(asm_input:SI ("r") ../../../src/include/cpu.h:355)
]
[] ../../../src/include/cpu.h:355)
(clobber (reg:CC 17 flags))
])
jump_insn
(parallel [
(asm_operands/v ("btrl %1,%0") ("") 0 [
(mem/c:BLK (plus:DI (reg:DI 100)
(const_int 96 [0x60])) [21 MEM[(struct revectored_struct *)&vm86u + 96B]+0 S32 A32 AS1])
(reg:SI 101)
]
[
(asm_input:BLK ("m") ../../../src/include/cpu.h:355)
(asm_input:SI ("r") ../../../src/include/cpu.h:355)
]
[] ../../../src/include/cpu.h:355)
(clobber (reg:CC 17 flags))
])
jump_insn
Please note that classify_insn declares the pattern as JUMP_INSN due to:
if (GET_CODE (x) == ASM_OPERANDS && ASM_OPERANDS_LABEL_VEC (x))
return JUMP_INSN;
but no label is defined in asm operands.
Reply at:
https://bugs.launchpad.net/ubuntu/+source/gcc-10/+bug/1979054/comments/4
------------------------------------------------------------------------
On 2022-06-13T10:04:23+00:00 Ubizjak wrote:
Dup of PR104777, the patch from the PR should be backported to gcc-10.
*** This bug has been marked as a duplicate of bug 104777 ***
Reply at:
https://bugs.launchpad.net/ubuntu/+source/gcc-10/+bug/1979054/comments/5
------------------------------------------------------------------------
On 2022-06-13T10:19:30+00:00 stsp wrote:
But no patch is back-ported,
and already closing the ticket?
Reply at:
https://bugs.launchpad.net/ubuntu/+source/gcc-10/+bug/1979054/comments/6
** Changed in: gcc
Status: Unknown => Fix Released
** Changed in: gcc
Importance: Unknown => Medium
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to gcc-8 in Ubuntu.
https://bugs.launchpad.net/bugs/1979054
Title:
gcc crashes on LP, needs updating
Status in Dosemu2:
Unknown
Status in gcc:
Fix Released
Status in gcc-10 package in Ubuntu:
Confirmed
Status in gcc-8 package in Ubuntu:
Confirmed
Status in gcc-9 package in Ubuntu:
Confirmed
Bug description:
Currently the bad gcc release
appeared on LP for ubuntu-20.04
and 21.10 (22.xx are OK).
It simply crashes, you can see
the logs here:
https://launchpadlibrarian.net/606710867/buildlog_ubuntu-focal-amd64.dosemu2_2.0~pre9-7464-30ac640ad+202206121231~ubuntu20.04.1_BUILDING.txt.gz
https://launchpadlibrarian.net/606710840/buildlog_ubuntu-impish-amd64.dosemu2_2.0~pre9-7464-30ac640ad+202206121231~ubuntu21.10.1_BUILDING.txt.gz
I filled the upstream ticket:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105936
and as the result, they back-ported
the previously existing fix to gcc-10
branch:
https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=f2851a7cff4d74edca26d39c7bfa1264355a22ed
They say that the gcc-9 branch is
EOL and won't be updated, so this
needs to be done by hands by ubuntu.
Fortunately the patch is very small
and can be trivially back-ported.
To manage notifications about this bug go to:
https://bugs.launchpad.net/dosemu2/+bug/1979054/+subscriptions
More information about the foundations-bugs
mailing list