The OpenCL kernel below leads to a segmentation fault in libamdocl64.so when compiling (using Linux, APPSDK-3.0)
void b(void (^f)(void))
{
f();
}
void a(void (^f)(void))
{
b( ^{ f(); } );
}
kernel
void crash()
{
a( ^{ } );
}
I'm guessing this would be allowed in OpenCL 2? (removing the nested block compiles successfully)
edit: add system info in attachment
Hi,
Thanks for reporting this. We'll check and get back to you.
Please share your setup details like Catalyst version, OS, graphics card etc.
Regards,
Hi
My setup is: (also see the two newly attached files (dmesg & clinfo))
OS: Debian Jessie
Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-1 (2016-03-06) x86_64 GNU/Linux
fglrx driver: 1:15.12-2~bpo8+1 (jessie-backports)
APU: AMD A10-7700K Radeon R7, 10 Compute Cores 4C+6G
APPSDK: 3.0
/proc/ati/0/biosversion
BIOS_CREATION_DATE="02/03/14,12:14:55"
BIOS_MSG="113-SPEC-102 SPECTRE DDR3 200e/ "
BIOS_KIT_VERSION="BK-AMD VER015.041.000.002.000000"
BIOS_PN="113-SPEC-102"
Thanks for your help
Thanks for sharing these setup details. I'll check and get back to you shortly.
Hi,
My apologies for this delayed reply.
Yes, I too observed the same segfault error using the latest Crimson 15.12 driver. It seems an OpenCL compiler issue and I'll file a bug report against it.
Regards,
No problem, I can work around it and thanks for your support.
Hi,
Here is an update. As I've come to know, the above test-case is invalid because it violates OpenCL standard, 6.12.5 Restrictions: "A Block cannot reference or capture another Block variable declared in the outer scope".
However, the segmentation fault issue has been resolved (in internal builds) and hopefully, the fix will be available in future releases.
Regards,