Skip to content

Commit 73d5c04

Browse files
[SYCL] Make image constructor notification pass reference optional (intel#10419)
On some build configurations, the std::optional<image_target> used in sampledImageConstructorNotification and unsampledImageConstructorNotification may not get correctly passed to the library, causing a segfault when accessed in any way. This is fixed by making it a constant reference instead. Note: This changes only recently added symbols, so it is not a release-to-release ABI break. --------- Signed-off-by: Larsen, Steffen <[email protected]>
1 parent dcbcd74 commit 73d5c04

File tree

4 files changed

+21
-21
lines changed

4 files changed

+21
-21
lines changed

sycl/include/sycl/accessor.hpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -248,13 +248,14 @@ void __SYCL_EXPORT constructorNotification(void *BufferObj, void *AccessorObj,
248248
const code_location &CodeLoc);
249249

250250
void __SYCL_EXPORT unsampledImageConstructorNotification(
251-
void *ImageObj, void *AccessorObj, std::optional<image_target> Target,
252-
access::mode Mode, const void *Type, uint32_t ElemSize,
253-
const code_location &CodeLoc);
251+
void *ImageObj, void *AccessorObj,
252+
const std::optional<image_target> &Target, access::mode Mode,
253+
const void *Type, uint32_t ElemSize, const code_location &CodeLoc);
254254

255255
void __SYCL_EXPORT sampledImageConstructorNotification(
256-
void *ImageObj, void *AccessorObj, std::optional<image_target> Target,
257-
const void *Type, uint32_t ElemSize, const code_location &CodeLoc);
256+
void *ImageObj, void *AccessorObj,
257+
const std::optional<image_target> &Target, const void *Type,
258+
uint32_t ElemSize, const code_location &CodeLoc);
258259

259260
template <typename T>
260261
using IsPropertyListT = typename std::is_base_of<PropertyListBase, T>;

sycl/source/detail/accessor_impl.cpp

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,10 @@ void constructorNotification(void *BufferObj, void *AccessorObj,
5555
BufferObj, AccessorObj, (uint32_t)Target, (uint32_t)Mode, CodeLoc);
5656
}
5757

58-
void unsampledImageConstructorNotification(void *ImageObj, void *AccessorObj,
59-
std::optional<image_target> Target,
60-
access::mode Mode, const void *Type,
61-
uint32_t ElemSize,
62-
const code_location &CodeLoc) {
58+
void unsampledImageConstructorNotification(
59+
void *ImageObj, void *AccessorObj,
60+
const std::optional<image_target> &Target, access::mode Mode,
61+
const void *Type, uint32_t ElemSize, const code_location &CodeLoc) {
6362
if (Target)
6463
XPTIRegistry::unsampledImageAccessorNotification(
6564
ImageObj, AccessorObj, (uint32_t)*Target, (uint32_t)Mode, Type,
@@ -69,10 +68,10 @@ void unsampledImageConstructorNotification(void *ImageObj, void *AccessorObj,
6968
ImageObj, AccessorObj, (uint32_t)Mode, Type, ElemSize, CodeLoc);
7069
}
7170

72-
void sampledImageConstructorNotification(void *ImageObj, void *AccessorObj,
73-
std::optional<image_target> Target,
74-
const void *Type, uint32_t ElemSize,
75-
const code_location &CodeLoc) {
71+
void sampledImageConstructorNotification(
72+
void *ImageObj, void *AccessorObj,
73+
const std::optional<image_target> &Target, const void *Type,
74+
uint32_t ElemSize, const code_location &CodeLoc) {
7675
if (Target)
7776
XPTIRegistry::sampledImageAccessorNotification(
7877
ImageObj, AccessorObj, (uint32_t)*Target, Type, ElemSize, CodeLoc);

sycl/test/abi/sycl_symbols_linux.dump

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3851,9 +3851,9 @@ _ZN4sycl3_V16detail13MemoryManager20allocateMemSubBufferESt10shared_ptrINS1_12co
38513851
_ZN4sycl3_V16detail13MemoryManager21copy_to_device_globalEPKvbSt10shared_ptrINS1_10queue_implEEmmS4_RKSt6vectorIP9_pi_eventSaISA_EEPSA_
38523852
_ZN4sycl3_V16detail13MemoryManager23copy_from_device_globalEPKvbSt10shared_ptrINS1_10queue_implEEmmPvRKSt6vectorIP9_pi_eventSaISB_EEPSB_
38533853
_ZN4sycl3_V16detail13MemoryManager24allocateInteropMemObjectESt10shared_ptrINS1_12context_implEEPvRKS3_INS1_10event_implEERKS5_RKNS0_13property_listERP9_pi_event
3854+
_ZN4sycl3_V16detail13MemoryManager29ext_oneapi_copyD2D_cmd_bufferESt10shared_ptrINS1_12context_implEEP22_pi_ext_command_bufferPNS1_11SYCLMemObjIEPvjNS0_5rangeILi3EEESC_NS0_2idILi3EEEjSA_jSC_SC_SE_jSt6vectorIjSaIjEEPj
38543855
_ZN4sycl3_V16detail13MemoryManager29ext_oneapi_copyD2H_cmd_bufferESt10shared_ptrINS1_12context_implEEP22_pi_ext_command_bufferPNS1_11SYCLMemObjIEPvjNS0_5rangeILi3EEESC_NS0_2idILi3EEEjPcjSC_SE_jSt6vectorIjSaIjEEPj
38553856
_ZN4sycl3_V16detail13MemoryManager29ext_oneapi_copyH2D_cmd_bufferESt10shared_ptrINS1_12context_implEEP22_pi_ext_command_bufferPNS1_11SYCLMemObjIEPcjNS0_5rangeILi3EEENS0_2idILi3EEEjPvjSC_SC_SE_jSt6vectorIjSaIjEEPj
3856-
_ZN4sycl3_V16detail13MemoryManager29ext_oneapi_copyD2D_cmd_bufferESt10shared_ptrINS1_12context_implEEP22_pi_ext_command_bufferPNS1_11SYCLMemObjIEPvjNS0_5rangeILi3EEESC_NS0_2idILi3EEEjSA_jSC_SC_SE_jSt6vectorIjSaIjEEPj
38573857
_ZN4sycl3_V16detail13MemoryManager30ext_oneapi_copy_usm_cmd_bufferESt10shared_ptrINS1_12context_implEEPKvP22_pi_ext_command_buffermPvSt6vectorIjSaIjEEPj
38583858
_ZN4sycl3_V16detail13MemoryManager3mapEPNS1_11SYCLMemObjIEPvSt10shared_ptrINS1_10queue_implEENS0_6access4modeEjNS0_5rangeILi3EEESC_NS0_2idILi3EEEjSt6vectorIP9_pi_eventSaISH_EERSH_
38593859
_ZN4sycl3_V16detail13MemoryManager4copyEPNS1_11SYCLMemObjIEPvSt10shared_ptrINS1_10queue_implEEjNS0_5rangeILi3EEESA_NS0_2idILi3EEEjS5_S8_jSA_SA_SC_jSt6vectorIP9_pi_eventSaISF_EERSF_
@@ -3948,10 +3948,10 @@ _ZN4sycl3_V16detail30UnsampledImageAccessorBaseHostC1ENS0_5rangeILi3EEENS0_6acce
39483948
_ZN4sycl3_V16detail30UnsampledImageAccessorBaseHostC2ENS0_5rangeILi3EEENS0_6access4modeEPviiNS0_2idILi3EEENS0_18image_channel_typeENS0_19image_channel_orderERKNS0_13property_listE
39493949
_ZN4sycl3_V16detail33reduGetMaxNumConcurrentWorkGroupsESt10shared_ptrINS1_10queue_implEE
39503950
_ZN4sycl3_V16detail34addHostSampledImageAccessorAndWaitEPNS1_28SampledImageAccessorImplHostE
3951-
_ZN4sycl3_V16detail35sampledImageConstructorNotificationEPvS2_St8optionalINS0_12image_targetEEPKvjRKNS1_13code_locationE
3951+
_ZN4sycl3_V16detail35sampledImageConstructorNotificationEPvS2_RKSt8optionalINS0_12image_targetEEPKvjRKNS1_13code_locationE
39523952
_ZN4sycl3_V16detail36addHostUnsampledImageAccessorAndWaitEPNS1_30UnsampledImageAccessorImplHostE
39533953
_ZN4sycl3_V16detail36get_empty_interop_kernel_bundle_implERKNS0_7contextERKSt6vectorINS0_6deviceESaIS6_EE
3954-
_ZN4sycl3_V16detail37unsampledImageConstructorNotificationEPvS2_St8optionalINS0_12image_targetEENS0_6access4modeEPKvjRKNS1_13code_locationE
3954+
_ZN4sycl3_V16detail37unsampledImageConstructorNotificationEPvS2_RKSt8optionalINS0_12image_targetEENS0_6access4modeEPKvjRKNS1_13code_locationE
39553955
_ZN4sycl3_V16detail6OSUtil10getDirNameB5cxx11EPKc
39563956
_ZN4sycl3_V16detail6OSUtil11alignedFreeEPv
39573957
_ZN4sycl3_V16detail6OSUtil12alignedAllocEmm
@@ -4189,8 +4189,8 @@ _ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device25gpu_eu_co
41894189
_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device25max_compute_queue_indicesEEENT_11return_typeEv
41904190
_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device4uuidEEENT_11return_typeEv
41914191
_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device9device_idEEENT_11return_typeEv
4192-
_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device13graph_supportEEENT_11return_typeEv
41934192
_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device12architectureEEENT_11return_typeEv
4193+
_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device13graph_supportEEENT_11return_typeEv
41944194
_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device15max_work_groupsILi1EEEEENT_11return_typeEv
41954195
_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device15max_work_groupsILi2EEEEENT_11return_typeEv
41964196
_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device15max_work_groupsILi3EEEEENT_11return_typeEv
@@ -4362,8 +4362,8 @@ _ZNK4sycl3_V16device8get_infoINS0_3ext5intel4info6device25gpu_eu_count_per_subsl
43624362
_ZNK4sycl3_V16device8get_infoINS0_3ext5intel4info6device25max_compute_queue_indicesEEENS0_6detail19is_device_info_descIT_E11return_typeEv
43634363
_ZNK4sycl3_V16device8get_infoINS0_3ext5intel4info6device4uuidEEENS0_6detail19is_device_info_descIT_E11return_typeEv
43644364
_ZNK4sycl3_V16device8get_infoINS0_3ext5intel4info6device9device_idEEENS0_6detail19is_device_info_descIT_E11return_typeEv
4365-
_ZNK4sycl3_V16device8get_infoINS0_3ext6oneapi12experimental4info6device13graph_supportEEENS0_6detail19is_device_info_descIT_E11return_typeEv
43664365
_ZNK4sycl3_V16device8get_infoINS0_3ext6oneapi12experimental4info6device12architectureEEENS0_6detail19is_device_info_descIT_E11return_typeEv
4366+
_ZNK4sycl3_V16device8get_infoINS0_3ext6oneapi12experimental4info6device13graph_supportEEENS0_6detail19is_device_info_descIT_E11return_typeEv
43674367
_ZNK4sycl3_V16device8get_infoINS0_3ext6oneapi12experimental4info6device15max_work_groupsILi1EEEEENS0_6detail19is_device_info_descIT_E11return_typeEv
43684368
_ZNK4sycl3_V16device8get_infoINS0_3ext6oneapi12experimental4info6device15max_work_groupsILi2EEEEENS0_6detail19is_device_info_descIT_E11return_typeEv
43694369
_ZNK4sycl3_V16device8get_infoINS0_3ext6oneapi12experimental4info6device15max_work_groupsILi3EEEEENS0_6detail19is_device_info_descIT_E11return_typeEv

sycl/test/abi/sycl_symbols_windows.dump

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1301,7 +1301,7 @@
13011301
?reset@filter_selector@oneapi@ext@_V1@sycl@@QEBAXXZ
13021302
?resize@AccessorImplHost@detail@_V1@sycl@@QEAAX_K@Z
13031303
?resize@buffer_impl@detail@_V1@sycl@@QEAAX_K@Z
1304-
?sampledImageConstructorNotification@detail@_V1@sycl@@YAXPEAX0V?$optional@W4image_target@_V1@sycl@@@std@@PEBXIAEBUcode_location@123@@Z
1304+
?sampledImageConstructorNotification@detail@_V1@sycl@@YAXPEAX0AEBV?$optional@W4image_target@_V1@sycl@@@std@@PEBXIAEBUcode_location@123@@Z
13051305
?sampledImageConstructorNotification@image_plain@detail@_V1@sycl@@IEAAXAEBUcode_location@234@PEAXPEBXIQEA_KW4image_format@34@AEBUimage_sampler@34@@Z
13061306
?sampledImageConstructorNotification@image_impl@detail@_V1@sycl@@QEAAXAEBUcode_location@234@PEAXPEBXIQEA_KW4image_format@34@AEBUimage_sampler@34@@Z
13071307
?sampledImageDestructorNotification@image_plain@detail@_V1@sycl@@IEAAXPEAX@Z
@@ -4941,7 +4941,7 @@
49414941
?throwIfActionIsCreated@handler@_V1@sycl@@AEAAXXZ
49424942
?throw_asynchronous@queue@_V1@sycl@@QEAAXXZ
49434943
?unmap@MemoryManager@detail@_V1@sycl@@SAXPEAVSYCLMemObjI@234@PEAXV?$shared_ptr@Vqueue_impl@detail@_V1@sycl@@@std@@1V?$vector@PEAU_pi_event@@V?$allocator@PEAU_pi_event@@@std@@@7@AEAPEAU_pi_event@@@Z
4944-
?unsampledImageConstructorNotification@detail@_V1@sycl@@YAXPEAX0V?$optional@W4image_target@_V1@sycl@@@std@@W4mode@access@23@PEBXIAEBUcode_location@123@@Z
4944+
?unsampledImageConstructorNotification@detail@_V1@sycl@@YAXPEAX0AEBV?$optional@W4image_target@_V1@sycl@@@std@@W4mode@access@23@PEBXIAEBUcode_location@123@@Z
49454945
?unsampledImageConstructorNotification@image_impl@detail@_V1@sycl@@QEAAXAEBUcode_location@234@PEAXPEBXIQEA_KW4image_format@34@@Z
49464946
?unsampledImageConstructorNotification@image_plain@detail@_V1@sycl@@IEAAXAEBUcode_location@234@PEAXPEBXIQEA_KW4image_format@34@@Z
49474947
?unsampledImageDestructorNotification@image_impl@detail@_V1@sycl@@QEAAXPEAX@Z

0 commit comments

Comments
 (0)