Watch, Follow, &
Connect with Us
Public Report
Report From: Delphi-BCB/Compiler/Delphi    [ Add a report in this area ]  
Report #:  108189   Status: Closed
[DCC Error] CompilerAVUnit.pas(26): F2084 Internal Error: AV21BCE0AC-R00000000-0
Project:  Delphi Build #:  11.0.2902.10471
Version:    11.2 Submitted By:   Jeroen Pluimers
Report Type:  Crash / Data loss / Total failure Date Reported:  8/23/2012 4:01:53 PM
Severity:    Extreme corner case Last Updated: 9/19/2012 9:57:01 AM
Platform:    All versions Internal Tracking #:  
Resolution: Fixed (Resolution Comments) Resolved in Build: : 17.0.4625.53395
Duplicate of:  None
Voting and Rating
Overall Rating: No Ratings Yet
0.00 out of 5
Total Votes: None
Description
This is a regression test cast that was present in Delphi 2007 and should make it on the regression list.

You might actually want to make this multiple regressions (as the original case had a function in stead of a procedure).

see http://wiert.me/2012/07/31/delphi-2007-reproduction-and-workaround-for-dcc-error-pas26-f2084-internal-error-av21bce0ac-r00000000-0/

Just in case you come accros this error:

[DCC Error] CompilerAVUnit.pas(26): F2084 Internal Error: AV21BCE0AC-R00000000-0

I had this error in a really complicated unit that I tried to backport from Delphi XE2 to Delphi 2007 (as there was some non-unicode compliant app that needed this).

I could not find it searching for F2084 Internal Error, so I sat down and trimmed it down to the CompilerAVUnit below.

The workaround is simple: remove the static; from method Outer and it compiles fine.

The reason I needed the static is that I had a class property, and the method Outer was in fact a function.

That is easy to workaround too have the property use a static getter which calls the non-static Outer.



//USc: This report has been filed upon my request, because I couldn't find an existing test case. Please add the test case to the test suite.
Steps to Reproduce:
- dcc32 QC108189.dpr

expected: it compiles
actual:
D2007: QC108189.dpr(19) Fatal: F2084 Internal Error: AV0046A6D7-R0000000E-0
D2009++: it compiles

program QC108189;

{$APPTYPE CONSOLE}

type
  TMethod = procedure of object;
  TmsxmlFactory = class(TObject)
    class procedure Outer; static; // remove "static;" and the AV goes away
    class procedure ClassMethod;
    class procedure CallClassMethod(const Method: TMethod);
  end;

class procedure TmsxmlFactory.Outer;
var
  Value: TMethod;
begin
  Value := ClassMethod;
  CallClassMethod(Value);
end;

class procedure TmsxmlFactory.ClassMethod;
begin
end;

class procedure TmsxmlFactory.CallClassMethod(const Method: TMethod);
begin
end;

begin
  WriteLn('PASS'); // on compile
end.
Workarounds
None
Attachment
None
Comments

Tomohiro Takahashi at 8/23/2012 5:25:12 PM -
This report was opened.
But, Internal Tracking Number field is still blank.

Server Response from: ETNACODE01