Forum Stats

  • 3,874,528 Users
  • 2,266,750 Discussions
  • 7,911,880 Comments

Discussions

Oracle bug that might be fixed in newer version?

I ran into a segmentation fault on Oracle 18 and 21 (using gvenzl/oracle-xe:21.3.0-slim) and was curious if this might have been fixed in a new version that the images haven't updated to yet. Here is the reproducer:

CREATE TABLE Pickup(
id NUMERIC(10,0) NOT NULL PRIMARY KEY,
owner varchar2(40)
)
CREATE TABLE Car(
id NUMERIC(10,0) NOT NULL PRIMARY KEY
)
insert into Pickup(id,owner) 
select c1_0.id,cast(null as varchar2(4000 char)) from Car c1_0 
union all 
select c2_0.id,cast(null as varchar2(4000 char)) from Car c2_0 
order by 1 
fetch first 1 rows only

Fails with the following:

Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x90] [PC:0x41AC124, kkqteCheckValidity()+3636] [flags: 0x0, count: 1]
Errors in file /opt/oracle/diag/rdbms/xe/XE/trace/XE_ora_494.trc  (incident=401) (PDBNAME=CDB$ROOT):
ORA-07445: exception encountered: core dump [kkqteCheckValidity()+3636] [SIGSEGV] [ADDR:0x90] [PC:0x41AC124] [Address not mapped to object] []
Incident details in: /opt/oracle/diag/rdbms/xe/XE/incident/incdir_401/XE_ora_494_i401.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
Dumping diagnostic data in directory=[cdmp_20220404092259], requested by (instance=1, osid=494), summary=[incident=401].

Note that wrapping the query group like this works:

insert into Pickup(id,owner) 
select * from (
select c1_0.id,cast(null as varchar2(4000 char)) from Car c1_0 
union all 
select c2_0.id,cast(null as varchar2(4000 char)) from Car c2_0 
) t
order by 1 
fetch first 1 rows only

Also see https://github.com/gvenzl/oci-oracle-xe/issues/100