Delphi XE6 can't compile last 1.2 version

Issue #180 resolved
Pavel Novak created an issue

Still can't compile latest version spring4d. In debug mode:[dcc32 Fatal Error] Internal Error: DBG3198 In release mode OK. Tested on two configurations (different PC) with same big project.. Older version from 2016/0312 is OK. Please fix it. Thanks.

Comments (19)

  1. Stefan Glienke repo owner

    If you don't post any source that reproduces this issue there is no way to find the issue and fix it (if it is fixable and not a compiler issue).

    We always (might be not in every commit though on an unreleased version) make sure that Spring4D itself compiles in both configurations (using either Build.exe or building the project group inside the IDE) and then reference the compiled DCUs in your project. Building Spring4D sources together with any other code in any combination cannot be tested by us.

  2. Pavel Novak reporter

    Hello Stefan,

    sorry for my bad english. I tried use Build with and without Debug configurations,building OK,but when I try compile my big project with this version Spring,I get error DBG3198. I tried build Spring in IDE,build OK,but with my project same error. I tried settings Use debug DCUs,use MSBUILD etc,but same error. I create very small project and using Container and IList for example,project builded OK. Google says that this error (Internal error DBGxxx) is problem with debugger,but I cannot locate combination from my project and spring,which generate this error:( I am frustrated and return to older version. When I have time,I will try clone versions from my ok version,commit by commit to find different,which create this error.

  3. Stefan Glienke repo owner

    Try removing parts of your application until the error goes away to pinpoint its cause.

    Also make sure your are using XE6 with Update1

  4. Pavel Novak reporter

    I have XE6 with update 1.Removing some parts is very problematic.I am checkouts down commits and try find first ok version for me.When find this I try find problematic place.

  5. Pavel Novak reporter

    I create small project only for test new Spring version.Problem is in Spring.Persistence.*.I have one unit with model definition only,but when I use Spring.Persistence.Mapping.Attributes I got DBG3198.Without using this unit I compile OK.Is possible now find incompatibility between spring 1.2 and spring.persistence? Edit: I found problematic unit Spring.Persistence.Core.Exceptions.

  6. Stefan Glienke repo owner

    It's exactly what I thought when I first saw this report. You are pointing your project to the pas files and not the dcus as you should. That causes the project options to be applied to the Spring units as well which causes the error in this case as there was obviously a defect in the compiler in XE6.

    The recommended way is putting the DCU folder to the library path of your Library path under Environment Options->Delphi Options->Library (as is done when using the Build.exe and checking "Update Delphi Registry").

    Fixing the issue in the project you posted can be done by just removing the implementation uses as the units there are not used anyway but I guess this will just fix the issue in this case and pop up again when adding back other units. I will see if this is fixable with little effort.

  7. Pavel Novak reporter

    I have set Library path to $(SPRINGPATH)\Library\DelphiXE6\$(Platform)\$(Config) where SPRINGPATH is root directory spring4d from bitbucket.DCUs created by Build.exe. Edit: I replaced $(SPRINGPATH)\Library\DelphiXE6\$(Platform)\$(Config) to $(SPRINGPATH)\Library\DelphiXE6\$(Platform)\Release but error DBG3198 still again.

  8. Pavel Novak reporter

    In Browsing path I have: $(SPRINGPATH)\Source; $(SPRINGPATH)\Source\Base; $(SPRINGPATH)\Source\Base\Collections; $(SPRINGPATH)\Source\Base\Logging; $(SPRINGPATH)\Source\Base\Patches; $(SPRINGPATH)\Source\Core\Container; $(SPRINGPATH)\Source\Core\Interception; $(SPRINGPATH)\Source\Core\Logging; $(SPRINGPATH)\Source\Core\Mocking; $(SPRINGPATH)\Source\Core\Services; $(SPRINGPATH)\Source\Extensions\Cryptography; $(SPRINGPATH)\Source\Extensions\Utils; $(SPRINGPATH)\Source\Persistence\Core; $(SPRINGPATH)\Source\Persistence\Adapters; $(SPRINGPATH)\Source\Persistence\Criteria; $(SPRINGPATH)\Source\Persistence\Mapping; $(SPRINGPATH)\Source\Persistence\ObjectDataset; $(SPRINGPATH)\Source\Persistence\SQL;

  9. Stefan Glienke repo owner

    Browsing path does not matter - its for moving to the sources when using "Find declaration" (aka Ctrl+Click)

  10. Stefan Glienke repo owner

    Changing the library path in your environment options does not do anything if you don't remove the paths to the pas files in your project because they are always preferred by the compiler.

    When doing so I cannot reproduce the error.

  11. Pavel Novak reporter

    OK,on tested small project I remove all from Project-Search path and now...voila compiled.Tommorow I test this with my complex project.

  12. Stefan Glienke repo owner

    I found a minimal case to reproduce this and posted it on the aforementioned JIRA issue.

    Since this seems to affect at least XE5 up to Berlin I will work on a fix (probably removing inline from all the TCollection methods)

  13. Log in to comment