Discussion:
XE-7 Internal Error: MA330
(zu alt für eine Antwort)
Matthias Frey
2014-12-19 14:33:18 UTC
Permalink
Hi,
ein Projekt wollte ich nun mit XE-7 verwenden.
Nun stoße ich auf einen "Internal Error: MA330".
Das müsste dieser sein:
http://qc.embarcadero.com/wc/qcmain.aspx?d=127370

Wenn ich mich dort anmelden will kommt "Timeout expired. The
timeout period elapsed prior to completion of the operation
or the server is not responding."

Was tun? Tipps?

Matthias
M. Behrendt
2014-12-19 20:49:47 UTC
Permalink
Folgendes zeigt mir Firefox unter dem angegebenen Link:

Report From: Delphi-BCB/Compiler/Delphi [ Add a report in this area ]
Report #: 127370 Status: Open
[dcc32 Fatal Error] F2084 Internal Error: MA330 on linking in debug but not in release
Project: Delphi Build #: 21.0.17017.3725
Version: 21.0 Submitted By: Jose Antonio Sanchez Lazaro
Report Type: Crash / Data loss / Total failure Date Reported: 9/4/2014 4:14:22 PM
Severity: Infrequently encountered problem Last Updated: 10/16/2014 5:37:22 PM
Platform: All versions Internal Tracking #: 55858
Resolution: Duplicate (Resolution Comments) Resolved in Build: : None
Duplicate of: 128330
Voting and Rating
Overall Rating: No Ratings Yet
0.00 out of 5
Total Votes: 10
Description
I'm trying to build some programs in debug mode.
All units build successfully, the status dialog change to linking and then this error is shown:

[dcc32 Fatal Error] F2084 Internal Error: MA330

Building the same projects in release mode works fine.

So I cannot use XE7, as I cannot debug my projects.
Steps to Reproduce:
Open the solution.
set the project to release.
Builds ok
change to debug
Builds fails with F2084 Internal Error: MA330
M. Behrendt
2014-12-19 20:52:54 UTC
Permalink
wichtiger ist die Diskussion dazu:

Jose Antonio Sanchez Lazaro at 9/5/2014 12:38:37 AM -
I've just checked that the 64 bits compiler doesn't raise any error.

What is the meaning of MA330?

Tomohiro Takahashi at 9/5/2014 3:39:47 AM -
Could you please attach sample project to reproduce/confirm your issue?

Jose Antonio Sanchez Lazaro at 9/7/2014 1:45:28 AM -
Not attached. I could send a sample project and required DCUs in private.

I guess the problem is related to generics.

Tomohiro Takahashi at 9/7/2014 6:20:21 PM -
ok, if possible, please contact technical support service.
http://support.embarcadero.com/

Jose Antonio Sanchez Lazaro at 11/5/2014 1:52:20 PM -
At the time, in September, I opened the support case, but I hadn't the time to reinstall XE7 (I went back to XE6 in order to work) and rebuild the projects until October. When I was to upload the project the support case was already closed.

Nevertheless after a lot of refactoring my code I've found how to build, In a function like this:
function

TOffendingClass.OffendingMethod<CacheType, InterfaceType>
(const Dictionary: TDictionary<TObject, InterfaceType>;
const CreateFunc: TShotWebObjectConstructor<CacheType, InterfaceType>)
: IQueryableList<IShotWebObject>;

I've changed this:

lista.Indexer := TShotWebIndexer.Create(lista,lista[0].getProperties,savePath);

to this:

lista.Indexer := createIndexer(lista,savePath);

Where createIndexer contains one line:

result := TShotWebIndexer.Create(lista,lista[0].getProperties,savePath);

Héctor Prieto at 10/16/2014 1:39:31 AM -
It can be reproduced by declaring this 6-level data structure:

T6 = TDictionary<Integer, Integer>;
T5 = TDictionary<Integer, T6>;
T4 = TDictionary<integer, T5>;
T3 = TDictionary<Integer, T4>;
T2 = TDictionary<integer, T3>;
T1 = TDictionary<Integer, T2>;

If compiled in Debug mode, the "[dcc32 Fatal Error] F2084 Internal Error: MA330" is produced; if compiled in release mode, no problems occur.

The error doesn't appear with a dictionary 5 levels deep; if T5 is changed to "TDictionary<Integer, Integer>;" everything works fine both in Debug and Release mode.
Matthias Frey
2014-12-22 08:53:40 UTC
Permalink
Hallo M,

den Text kann ich schon lesen. Der Fehler tritt erst beim Anmelden auf.
Danke, habe mir das aufgrund Deiner Anregung nochmals angesehen ...
Post by M. Behrendt
...
function
TOffendingClass.OffendingMethod<CacheType, InterfaceType>
(const Dictionary: TDictionary<TObject, InterfaceType>;
const CreateFunc: TShotWebObjectConstructor<CacheType, InterfaceType>)
: IQueryableList<IShotWebObject>;
lista.Indexer := TShotWebIndexer.Create(lista,lista[0].getProperties,savePath);
lista.Indexer := createIndexer(lista,savePath);
result := TShotWebIndexer.Create(lista,lista[0].getProperties,savePath);
Na ja, bei uns sieht der Code anders aus. Leider zeigt Delphi
nicht genau an wo der Fehler ist. Immerhin konnte ich die unit
herausfinden. Diese ist jedoch nicht so klein. Ein Großteil der
Level dürfte auch in einem FrameWork stecken das wir verwenden.

Es wäre mühsam da einen Workaround zu finden.

Es kanns ja auch nicht sein, dass wir unsere Arbeit nicht
fertig stellen können, nur weil wir von XE-6 auf XE-7 gewechselt haben.
Der Bug wurde schon im September gemeldet. "Die" sollen endlich
mal ihre Arbeit tun.
Post by M. Behrendt
...
Matthias

Loading...