Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   iOS FMX: SOAP führt nicht vorhersehbar zu EInsufficientRTTI (https://www.delphipraxis.net/194819-fmx-soap-fuehrt-nicht-vorhersehbar-zu-einsufficientrtti.html)

Sherlock 10. Jan 2018 15:47

FMX: SOAP führt nicht vorhersehbar zu EInsufficientRTTI
 
Ich hänge irgendwie fest, und kanns mir nicht erklären, was da passiert. Mein Projekt ist für Win, macOS und iOS. Die ersten beiden machen keine Probleme (mehr), aber unter iOS kommt es sporadisch, nicht vorhersehbar zu dieser Exception
Zitat:

Im Projekt ist eine Exception der Klasse EInsufficientRtti mit der Meldung 'Unzureichende RTTI zur Unterstützung dieser Operation verfügbar' aufgetreten.
die sehe ich aber nur im Debugger. Wenn die App alleine läuft, beendet sie sich einfach komplett, und ich rate, daß das an dieser Exception liegt.

Das Vorkommen der Exception konnte ich auf SOAP-Aufrufe eingrenzen (ich verwende schlicht sonst keine RTTI, zumindest aktiv und bewusst). Ich habe eine soap.pas basierend auf die Server-WSDL von Delphi erzeugen lassen, und es läuft auch wie gesagt unter Win und macOS ganz ordentlich, unter iOS kann es mal stundenlang gut gehen, und mal direkt beim App-Start nicht. Wenn das dann aber mal passiert, dann war es das, ich habe keinen Schimmer, wie ich auf diese Exception reagieren soll. Denn die SOAP-Objekte sind ja IInvokable, die im initialization der soap.pas registriert werden. Ich kann nichts freigeben und neu erzeugen, oder wie mache ich das mit einer Unit zur Laufzeit?

Sherlock

Rollo62 10. Jan 2018 18:03

AW: FMX: SOAP führt nicht vorhersehbar zu EInsufficientRTTI
 
Gibt es ein Test-Projekt, dann könnte ich das mal probieren ?

Habe zwar bisher nur SOAP unter Win gemacht, aber iOS steht immer auf der Liste.

Rollo

Sherlock 11. Jan 2018 06:45

AW: FMX: SOAP führt nicht vorhersehbar zu EInsufficientRTTI
 
Hmmm, dann bräuchte es auch einen Server... beides kommt von mir. Ich bin mir allerdings ziemlich sicher, daß es auch mit der Masse von Requests zu tun hat, die mein Client sendet.ich versuche das mal einzudämmen. Ein Testprojekt wird schwierig. Ich wollte nur erstmal hören, ob das ein bekanntes Thema ist, oder eher nicht. Wie es mir scheint gilt letzteres.

Danke!

Sherlock

Rollo62 12. Jan 2018 06:34

AW: FMX: SOAP führt nicht vorhersehbar zu EInsufficientRTTI
 
Ich meinte auch erstmal testen mit einem freien Service:
http://www.webservicex.net/WS/wscatlist.aspx

Wenn dir das weiterhilft.
Damit schonmal der Client läuft.

Rollo

Stevie 12. Jan 2018 12:09

AW: FMX: SOAP führt nicht vorhersehbar zu EInsufficientRTTI
 
AFAIK nutzt SOAP unten drunter die RTTI - wäre also eine Hilfe, wenn du den Callstack anschauen/posten würdest, es gibt ca nen Duzend Stellen, die diese Exception raisen (alle samt in der System.Rtti.pas)

Sherlock 12. Jan 2018 12:54

AW: FMX: SOAP führt nicht vorhersehbar zu EInsufficientRTTI
 
Stevie, das habe ich auch herausgefunden. Ich bin gerade dabei eine Möglichkeit zu finden, das gesamte SOPA-Objekt, also das IInvokable, neu zu registrieren.

Sherlock

Stevie 12. Jan 2018 12:59

AW: FMX: SOAP führt nicht vorhersehbar zu EInsufficientRTTI
 
Wenn das sporadisch passiert vermute ich eher ein Problem mit Multithreading.
Die RTTI ist nicht threadsafe - beim initialen Erzeugen der RTTI Objekte kann es zu race conditions kommen.
Das würde sich auch mit deiner Aussage, dass es beim App start kracht, decken.

QuickAndDirty 12. Jan 2018 14:21

AW: FMX: SOAP führt nicht vorhersehbar zu EInsufficientRTTI
 
Zitat:

Zitat von Stevie (Beitrag 1390899)
Wenn das sporadisch passiert vermute ich eher ein Problem mit Multithreading.
Die RTTI ist nicht threadsafe - beim initialen Erzeugen der RTTI Objekte kann es zu race conditions kommen.
Das würde sich auch mit deiner Aussage, dass es beim App start kracht, decken.

Ich bin jetzt nicht OP. Aber mal ernsthaft damit SOAP wie es von Delphi unterstützt wird (WSDL import &c) läuft muss es ja RTTI benutzen. Und als Indy TCP Anwendung ist Multithreding auf beiden Seiten(Server und Client) gegeben.
Müssen wir das als Programmierer jetzt selbst absichern? Oder macht der generierte Code das schon vernünftig?
Kann man einen von Delphi generierten Soap Server unter last laufen lassen?

Sherlock 12. Jan 2018 14:43

AW: FMX: SOAP führt nicht vorhersehbar zu EInsufficientRTTI
 
RTTI ist nicht Threadsafe? Das ist natürlich ein Problem, da ich die SOAP-Aufrufe in einen Thread auslagere... Gnarf!! Unter Windows führt das aber über Tage(!!!) Nicht zu Problemen.

Jetzt muss ich mal in mich gehen.

Sherlock

Stevie 14. Jan 2018 13:17

AW: FMX: SOAP führt nicht vorhersehbar zu EInsufficientRTTI
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1390907)
Zitat:

Zitat von Stevie (Beitrag 1390899)
Die RTTI ist nicht threadsafe - beim initialen Erzeugen der RTTI Objekte kann es zu race conditions kommen.

Müssen wir das als Programmierer jetzt selbst absichern? Oder macht der generierte Code das schon vernünftig?
Kann man einen von Delphi generierten Soap Server unter last laufen lassen?

Zitat:

Zitat von Sherlock (Beitrag 1390910)
RTTI ist nicht Threadsafe? Das ist natürlich ein Problem, da ich die SOAP-Aufrufe in einen Thread auslagere... Gnarf!! Unter Windows führt das aber über Tage(!!!) Nicht zu Problemen.

Ich sollte das wohl mal spezifizieren - bestimmte Teile in der unit System.Rtti sind nicht threadsafe.
Guckstu: https://quality.embarcadero.com/browse/RSP-17897 (bin nicht sicher, ob das genau der Fehler ist, der dich betrifft, aber es ist einer davon)

Es gab noch andere Fehler, die aber zumindest in 10.2 gefixt sein sollten, wie z.B. https://quality.embarcadero.com/browse/RSP-12906


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz