An issue with thread-local storage that could cause AVs on some Win64 machines has been resolved
We've just released a patch for C++Builder 10.3.3 that resolves:
This was caused by an error setting up the Win64 32-byte shadow space inside the assembly code to clean up TLS (thread-local storage) data, combined with the compiler applying a tail-call optimization to a method call (HeapFree) called within that, which meant that with the compiler optimization applied the effective caller of HeapFree was the code that incorrectly set up the shadow space. On some machines, possibly dependent on different Windows builds, HeapFree uses that shadow space, and so the TLS cleanup crashed. The patch correctly sets up the shadow space, and the crash no longer occurs.
The patch is available here: https://cc.embarcadero.com/item/30909 Full installation instructions are included in the readme.
Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder. Design. Code. Compile. Deploy.
Start Free Trial
Free Delphi Community Edition
Free C++Builder Community Edition
Just took the time to have a closer look. It looks like a mess.
Situation before the patch:
After the patch:
Anyway... the files in debug and release looks identical. The linker looks for .o files in both directories (according to ilink64 command line). So... this is a NON-PROBLEM, apparently, because the linker is happy anyway, whichever directory it finds the files in.
Yes. All components selected during installation EXCEPT Interbase (I use Firebird). EDIT: the missing files are only three: c0fmx64.o, c0w64.o, c0x64.o. The first one c0d64w.o is present, my mistake. Another NOTE: I used the ISO installer. Thank you for your interest.
Just as a sanity check, do you have the C++ Win64 platform installed in the IDE? Those files should be present if so.
Hello! I downloaded the patch today but some of the files referenced in the instructions are missing from my RAD Studio installation. It is a fresh installation. Looking at another fresh installation, they're missing there too. The missing files are: c0d64w.o, c0fmx64.o, c0w64.o, c0x64.o. They're missing both from lib\win64\debug and lib\win64\release.
We are indeed working on making this easier.
please think about providing some kind of installation mechanism for the patches. It is getting more and more difficult to track and apply patches - please also see https://quality.embarcadero.com/browse/RSP-27553 and https://quality.embarcadero.com/browse/RSP-27676
Hello. When you unzip the patch, you should see two files:
The second one is the patch itself. The first, a .md (Markdown, ie text format) file, is the readme.
Downloaded the patch today, but cannot find a "Readme". In the past, some patches had very specific install requirements, so I'm not ready to just plow-ahead. Help locating the readme file would be appreciated. (don't see it anywhere in the .zip)