Creators Update BPL Loading Issue and Tokyo Release 1

Posted by on in Tutorial

As mentioned in the release notes of Tokyo 10.2.1, the latest release of RAD Studio addresses the issues caused by Windows 10 Creators Update and related with DLL and BPL loading. The issue is caused by a change (a bug!) in the DLL loading algorithm of the operating system, an issue that Microsoft has fixed in the new coming release of Windows 10, currently known as Fall Creators Update. I've already covered the problem in a past blog post, http://blog.marcocantu.com/blog/2017-june-delphi-packages-creators-update.html. There is also some discussion on the related Quality Portal bug report at https://quality.embarcadero.com/browse/RSP-17972.

Tokyo Release 1 Fixes the Issue

In this new post I don't want to get back to the technical information already discussed there, but focus on what's changed in Delphi Tokyo Release 1. In short, Embarcadero developers modified the compilers and linkers to emit a single export table section for each BPL, to avoid each section of the export table to cause the operating system to reload the same library once more.

As a experiment, on my primary system (which is running Windows 10 Creators Update) I took a very simple one button VCL application, activated runtime packages (which causes dependencies from the RTL and VCL packages) and started it in the debugger. I used Berlin 10.1.2 and Tokyo 10.2.1 side by side and you can clearly see the difference in the image below:

The Detailed Event Logs

In the detailed log for Tokyo 10.2.1 you can see that some unloading and reloading still happens (unloading is set in bold), but the same can be seen for some Microsoft system DLLs:

Thread Start: Thread ID: 3972. Process ProjectLoad.exe (2964) Process Start: C:\Users\marco\Documents\Embarcadero\Studio\Projects\Win32\Debug\ProjectLoad.exe. Base Address: $00400000. Process ProjectLoad.exe (2964) Module Load: ProjectLoad.exe. Has Debug Info. Base Address: $00400000. Process ProjectLoad.exe (2964) Module Load: ntdll.dll. No Debug Info. Base Address: $76EF0000. Process ProjectLoad.exe (2964) Module Load: KERNEL32.dll. No Debug Info. Base Address: $75320000. Process ProjectLoad.exe (2964) Module Unload: KERNEL32.dll. Process ProjectLoad.exe (2964) Module Load: KERNEL32.dll. No Debug Info. Base Address: $75320000. Process ProjectLoad.exe (2964) Module Load: KERNELBASE.dll. No Debug Info. Base Address: $74DE0000. Process ProjectLoad.exe (2964) Thread Start: Thread ID: 6872. Process ProjectLoad.exe (2964) Thread Start: Thread ID: 12820. Process ProjectLoad.exe (2964) Module Load: vcl250.bpl. Has Debug Info. Base Address: $50A80000. Process ProjectLoad.exe (2964) Module Load: rtl250.bpl. Has Debug Info. Base Address: $00C00000. Process ProjectLoad.exe (2964) Module Unload: rtl250.bpl. Process ProjectLoad.exe (2964) Module Load: SHLWAPI.dll. No Debug Info. Base Address: $75160000. Process ProjectLoad.exe (2964) Module Load: msvcrt.dll. No Debug Info. Base Address: $75DF0000. Process ProjectLoad.exe (2964) Module Load: combase.dll. No Debug Info. Base Address: $75BB0000. Process ProjectLoad.exe (2964) Module Load: ucrtbase.dll. No Debug Info. Base Address: $76200000. Process ProjectLoad.exe (2964) Module Load: RPCRT4.dll. No Debug Info. Base Address: $76C60000. Process ProjectLoad.exe (2964) Module Load: SspiCli.dll. No Debug Info. Base Address: $739C0000. Process ProjectLoad.exe (2964) Module Load: CRYPTBASE.dll. No Debug Info. Base Address: $739B0000. Process ProjectLoad.exe (2964) Module Load: bcryptPrimitives.dll. No Debug Info. Base Address: $750F0000. Process ProjectLoad.exe (2964) Thread Start: Thread ID: 1944. Process ProjectLoad.exe (2964) Module Load: SECHOST.dll. No Debug Info. Base Address: $755C0000. Process ProjectLoad.exe (2964) Module Load: GDI32.dll. No Debug Info. Base Address: $76DD0000. Process ProjectLoad.exe (2964) Module Load: gdi32full.dll. No Debug Info. Base Address: $76AC0000. Process ProjectLoad.exe (2964) Module Load: msvcp_win.dll. No Debug Info. Base Address: $753F0000. Process ProjectLoad.exe (2964) Module Load: USER32.dll. No Debug Info. Base Address: $74FB0000. Process ProjectLoad.exe (2964) Module Load: win32u.dll. No Debug Info. Base Address: $76060000. Process ProjectLoad.exe (2964) Module Load: COMDLG32.dll. No Debug Info. Base Address: $75AC0000. Process ProjectLoad.exe (2964) Module Load: SHCORE.dll. No Debug Info. Base Address: $76E60000. Process ProjectLoad.exe (2964) Module Load: WINSPOOL.DRV. No Debug Info. Base Address: $66030000. Process ProjectLoad.exe (2964) Module Load: SHELL32.dll. No Debug Info. Base Address: $73A90000. Process ProjectLoad.exe (2964) Module Load: bcrypt.dll. No Debug Info. Base Address: $72990000. Process ProjectLoad.exe (2964) Module Load: COMCTL32.dll. No Debug Info. Base Address: $6EF40000. Process ProjectLoad.exe (2964) Module Load: CFGMGR32.dll. No Debug Info. Base Address: $76020000. Process ProjectLoad.exe (2964) Module Load: Windows.Storage.dll. No Debug Info. Base Address: $76530000. Process ProjectLoad.exe (2964) Module Load: ADVAPI32.dll. No Debug Info. Base Address: $75230000. Process ProjectLoad.exe (2964) Module Load: AppCore.dll. No Debug Info. Base Address: $75310000. Process ProjectLoad.exe (2964) Module Load: POWRPROF.dll. No Debug Info. Base Address: $73A40000. Process ProjectLoad.exe (2964) Module Load: profapi.dll. No Debug Info. Base Address: $75150000. Process ProjectLoad.exe (2964) Module Load: OLEAUT32.dll. No Debug Info. Base Address: $76D20000. Process ProjectLoad.exe (2964) Module Load: ole32.dll. No Debug Info. Base Address: $760D0000. Process ProjectLoad.exe (2964) Module Load: oledlg.dll. No Debug Info. Base Address: $63220000. Process ProjectLoad.exe (2964) Module Load: rtl250.bpl. Has Debug Info. Base Address: $00D00000. Process ProjectLoad.exe (2964) Module Unload: rtl250.bpl. Process ProjectLoad.exe (2964) Module Load: rtl250.bpl. Has Debug Info. Base Address: $00D00000. Process ProjectLoad.exe (2964) Module Load: WS2_32.dll. No Debug Info. Base Address: $751C0000. Process ProjectLoad.exe (2964) Module Load: MPR.dll. No Debug Info. Base Address: $72B60000. Process ProjectLoad.exe (2964) Module Load: imagehlp.dll. No Debug Info. Base Address: $76C30000. Process ProjectLoad.exe (2964) Module Load: OLEACC.dll. No Debug Info. Base Address: $65270000. Process ProjectLoad.exe (2964) Module Load: OPENGL32.dll. No Debug Info. Base Address: $6E800000. Process ProjectLoad.exe (2964) Module Load: VERSION.dll. No Debug Info. Base Address: $73940000. Process ProjectLoad.exe (2964) Module Load: NETAPI32.dll. No Debug Info. Base Address: $71B10000. Process ProjectLoad.exe (2964) Module Load: WINHTTP.dll. No Debug Info. Base Address: $72AB0000. Process ProjectLoad.exe (2964) Module Load: SHFOLDER.dll. No Debug Info. Base Address: $73100000. Process ProjectLoad.exe (2964) Module Load: WSOCK32.dll. No Debug Info. Base Address: $729B0000. Process ProjectLoad.exe (2964) Module Load: GLU32.dll. No Debug Info. Base Address: $6FAA0000. Process ProjectLoad.exe (2964) Module Load: netutils.dll. No Debug Info. Base Address: $70000000. Process ProjectLoad.exe (2964) Module Load: IMM32.dll. No Debug Info. Base Address: $761D0000. Process ProjectLoad.exe (2964) Module Load: MSCTF.dll. No Debug Info. Base Address: $75470000. Process ProjectLoad.exe (2964) Module Load: UxTheme.dll. No Debug Info. Base Address: $6CBE0000. Process ProjectLoad.exe (2964) Module Load: dwmapi.dll. No Debug Info. Base Address: $6AD20000. Process ProjectLoad.exe (2964) Module Load: WTSAPI32.dll. No Debug Info. Base Address: $66E80000. Process ProjectLoad.exe (2964) Module Load: WINSTA.dll. No Debug Info. Base Address: $68D20000. Process ProjectLoad.exe (2964) Module Load: TextInputFramework.dll. No Debug Info. Base Address: $6D180000. Process ProjectLoad.exe (2964) Module Load: CoreMessaging.dll. No Debug Info. Base Address: $6CEC0000. Process ProjectLoad.exe (2964) Module Load: CoreUIComponents.dll. No Debug Info. Base Address: $6CF50000. Process ProjectLoad.exe (2964) Module Load: WinTypes.dll. No Debug Info. Base Address: $6FBE0000. Process ProjectLoad.exe (2964) Module Load: NTMARTA.dll. No Debug Info. Base Address: $71F10000. Process ProjectLoad.exe (2964) Module Load: USERMGRCLI.dll. No Debug Info. Base Address: $6CEB0000. Process ProjectLoad.exe (2964)

Compare the log above to the same for an application compiled with Berlin 10.1.2:

Thread Start: Thread ID: 3512. Process Project14.exe (6928) Process Start: C:\Users\marco\Documents\Embarcadero\Studio\Projects\Win32\Debug\Project14.exe. Base Address: $00400000. Process Project14.exe (6928) Module Load: Project14.exe. Has Debug Info. Base Address: $00400000. Process Project14.exe (6928) Module Load: ntdll.dll. No Debug Info. Base Address: $76EF0000. Process Project14.exe (6928) Module Load: KERNEL32.dll. No Debug Info. Base Address: $75320000. Process Project14.exe (6928) Module Unload: KERNEL32.dll. Process Project14.exe (6928) Module Load: KERNEL32.dll. No Debug Info. Base Address: $75320000. Process Project14.exe (6928) Module Load: KERNELBASE.dll. No Debug Info. Base Address: $74DE0000. Process Project14.exe (6928) Thread Start: Thread ID: 872. Process Project14.exe (6928) Thread Start: Thread ID: 12124. Process Project14.exe (6928) Thread Start: Thread ID: 5136. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $02160000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $02B80000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $02160000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: vcl240.bpl. Has Debug Info. Base Address: $50A70000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Load: USER32.dll. No Debug Info. Base Address: $74FB0000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: win32u.dll. No Debug Info. Base Address: $76060000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: GDI32.dll. No Debug Info. Base Address: $76DD0000. Process Project14.exe (6928) Module Load: gdi32full.dll. No Debug Info. Base Address: $76AC0000. Process Project14.exe (6928) Module Load: msvcp_win.dll. No Debug Info. Base Address: $753F0000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: ucrtbase.dll. No Debug Info. Base Address: $76200000. Process Project14.exe (6928) Module Load: ADVAPI32.dll. No Debug Info. Base Address: $75230000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: msvcrt.dll. No Debug Info. Base Address: $75DF0000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: SECHOST.dll. No Debug Info. Base Address: $755C0000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: RPCRT4.dll. No Debug Info. Base Address: $76C60000. Process Project14.exe (6928) Module Load: SspiCli.dll. No Debug Info. Base Address: $739C0000. Process Project14.exe (6928) Module Load: CRYPTBASE.dll. No Debug Info. Base Address: $739B0000. Process Project14.exe (6928) Module Load: bcryptPrimitives.dll. No Debug Info. Base Address: $750F0000. Process Project14.exe (6928) Module Load: SHLWAPI.dll. No Debug Info. Base Address: $75160000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Load: combase.dll. No Debug Info. Base Address: $75BB0000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: OLEAUT32.dll. No Debug Info. Base Address: $76D20000. Process Project14.exe (6928) Module Load: ole32.dll. No Debug Info. Base Address: $760D0000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: SHELL32.dll. No Debug Info. Base Address: $73A90000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: CFGMGR32.dll. No Debug Info. Base Address: $76020000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: SHCORE.dll. No Debug Info. Base Address: $76E60000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: Windows.Storage.dll. No Debug Info. Base Address: $76530000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: AppCore.dll. No Debug Info. Base Address: $75310000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: POWRPROF.dll. No Debug Info. Base Address: $73A40000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: profapi.dll. No Debug Info. Base Address: $75150000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Load: COMDLG32.dll. No Debug Info. Base Address: $75AC0000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $02160000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: COMCTL32.dll. No Debug Info. Base Address: $6EF40000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $02160000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: WINSPOOL.DRV. No Debug Info. Base Address: $00930000. Process Project14.exe (6928) Module Unload: WINSPOOL.DRV. Process Project14.exe (6928) Module Load: WINSPOOL.DRV. No Debug Info. Base Address: $66030000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: oledlg.dll. No Debug Info. Base Address: $63220000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $02160000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $02160000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: bcrypt.dll. No Debug Info. Base Address: $72990000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Load: imagehlp.dll. No Debug Info. Base Address: $76C30000. Process Project14.exe (6928) Module Load: WS2_32.dll. No Debug Info. Base Address: $751C0000. Process Project14.exe (6928) Module Load: VERSION.dll. No Debug Info. Base Address: $73940000. Process Project14.exe (6928) Module Load: MPR.dll. No Debug Info. Base Address: $72B60000. Process Project14.exe (6928) Module Load: SHFOLDER.dll. No Debug Info. Base Address: $73100000. Process Project14.exe (6928) Module Load: NETAPI32.dll. No Debug Info. Base Address: $71B10000. Process Project14.exe (6928) Module Load: WSOCK32.dll. No Debug Info. Base Address: $729B0000. Process Project14.exe (6928) Module Load: OPENGL32.dll. No Debug Info. Base Address: $6E800000. Process Project14.exe (6928) Module Load: OLEACC.dll. No Debug Info. Base Address: $65270000. Process Project14.exe (6928) Module Load: WINHTTP.dll. No Debug Info. Base Address: $72AB0000. Process Project14.exe (6928) Module Load: GLU32.dll. No Debug Info. Base Address: $6FAA0000. Process Project14.exe (6928) Module Load: IMM32.dll. No Debug Info. Base Address: $761D0000. Process Project14.exe (6928) Module Load: wkscli.dll. No Debug Info. Base Address: $73190000. Process Project14.exe (6928) Module Load: CSCAPI.dll. No Debug Info. Base Address: $6FA70000. Process Project14.exe (6928) Module Load: MSCTF.dll. No Debug Info. Base Address: $75470000. Process Project14.exe (6928) Module Load: UxTheme.dll. No Debug Info. Base Address: $6CBE0000. Process Project14.exe (6928) Module Load: dwmapi.dll. No Debug Info. Base Address: $6AD20000. Process Project14.exe (6928) Module Load: WTSAPI32.dll. No Debug Info. Base Address: $66E80000. Process Project14.exe (6928) Module Load: WINSTA.dll. No Debug Info. Base Address: $68D20000. Process Project14.exe (6928)

Rebuilding Your Project Might not Be Enough

So if you have an application that uses runtime package in Tokyo on Creators Update, do you just need to rebuild it to have it load faster and be able to debug more smoothly? If you are only using runtime packages that come with RAD Studio, rebuilding is enough as the runtime package that ship with 10.2.1 have been re-compiled. If you are using additional packages of your own or for which you have the source code, you'll need to recompile also those packages -- even if they are binary compatible and would work. If you are using third party packages you don't have the source code for, you need to ask the third party vendor for a new version build with the compiler in Tokyo Release 1.

Conclusion: Can We Ask Microsoft for a Fix?

Needless to say, this compiler change shouldn't have been needed, would Microsoft had fixed the issue the introduced timely. Given how many users are affected, this should have been expected. Maybe there is still time to insist with Microsoft to release the fix they did for a future version to the current version of Windows... given how hard it is to skip a release these days.

All we at Embarcadero could do was to apply a "workaround" to the most recent release, Tokyo. We are considering providing the same fix for older versions like Berlin and Seattle -- although again this will require a large update from us and also a new build of all third party packages! 

 



About
Gold User, Rank: 7, Points: 457
Delphi and RAD Studio Product Manager at Embarcadero.

Comments

Check out more tips and tricks in this development video: