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