Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi Abstürze nach längerer Laufzeit (https://www.delphipraxis.net/209964-abstuerze-nach-laengerer-laufzeit.html)

zeras 13. Feb 2022 10:40

Abstürze nach längerer Laufzeit
 
Hallo,

ich habe eine APP, die 24/7 läuft. Nun berichtet ein Kunde, dass die APP nach längerer Laufzeit abstürzen würde.
In der Play Console finde ich bei Absturzdetails den Stacktrace.
Es scheint ja bei mehreren Geräten aufzutreten, da verschiedene Geräte angezeigt werden.
Aber kann man damit was anfangen?
Wie kann ich die Ursache finden?
Hier einige Infos zu den Abstürzen:

Code:
Absturz
Samsung Galaxy Tab A 10.1
Android 7.0 (SDK 24)
38.apk
vor 19 Tagen
pid: 0, tid: 0 >>> com.embarcadero.MeineApp <<<

backtrace:
  #00  pc 000000000004ad30  /system/lib/libc.so (tgkill+12)
  #00  pc 00000000000484c3  /system/lib/libc.so (pthread_kill+34)
  #00  pc 000000000001dd99  /system/lib/libc.so (raise+10)
  #00  pc 0000000000019521  /system/lib/libc.so (__libc_android_abort+34)
  #00  pc 0000000000017160  /system/lib/libc.so (abort+4)
  #00  pc 000000000031b7f9  /system/lib/libart.so (art::Runtime::Abort()+252)
  #00  pc 00000000000b4dcb /system/lib/libart.so (art::LogMessage::~LogMessage()+866)
  #00  pc 00000000001bcaa9  /system/lib/libart.so (art::IndirectReferenceTable::AbortIfNoCheckJNI()+84)
  #00  pc 000000000023de3f /system/lib/libart.so (art::IndirectReferenceTable::GetChecked(void*) const+498)
  #00  pc 000000000023b0f3  /system/lib/libart.so (art::JavaVMExt::DecodeWeakGlobal(art::Thread*, void*)+30)
  #00  pc 00000000003355a5  /system/lib/libart.so (art::Thread::DecodeJObject(_jobject*) const+164)
  #00  pc 00000000003173ff /system/lib/libart.so (art::ArgArray::BuildArgArrayFromJValues(art::ScopedObjectAccessAlreadyRunnable const&, art::mirror::Object*, jvalue*)+154)
  #00  pc 000000000031726f /system/lib/libart.so (art::InvokeWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue*)+250)
  #00  pc 0000000000274f8b /system/lib/libart.so (art::JNI::CallStaticBooleanMethodA(_JNIEnv*, _jclass*, _jmethodID*, jvalue*)+426)
  #00  pc 00000000006a6773  /data/app/com.embarcadero.MeineApp-1/lib/arm/libMeineApp.so (ExecJNI+394)
  #00  pc 0000000000db791b /data/app/com.embarcadero.MeineApp-1/lib/arm/libMeineApp.so
  #00  pc 0000000000dc3eb7  /data/app/com.embarcadero.MeineApp-1/lib/arm/libMeineApp.so
  #00  pc 0000000000daa2b5  /data/app/com.embarcadero.MeineApp-1/lib/arm/libMeineApp.so
  #00  pc 0000000000db2bdf /data/app/com.embarcadero.MeineApp-1/lib/arm/libMeineApp.so
  #00  pc 0000000000a91481  /data/app/com.embarcadero.MeineApp-1/lib/arm/libMeineApp.so
  #00  pc 0000000000576205  /data/app/com.embarcadero.MeineApp-1/lib/arm/libMeineApp.so
  #00  pc 0000000000566671  /data/app/com.embarcadero.MeineApp-1/lib/arm/libMeineApp.so
  #00  pc 00000000006478d9  /data/app/com.embarcadero.MeineApp-1/lib/arm/libMeineApp.so
  #00  pc 000000000064688f /data/app/com.embarcadero.MeineApp-1/lib/arm/libMeineApp.so
  #00  pc 0000000000a8c86b /data/app/com.embarcadero.MeineApp-1/lib/arm/libMeineApp.so
  #00  pc 00000000005663af /data/app/com.embarcadero.MeineApp-1/lib/arm/libMeineApp.so
  #00  pc 000000000056d0cd /data/app/com.embarcadero.MeineApp-1/lib/arm/libMeineApp.so
  #00  pc 0000000000ab16af /data/app/com.embarcadero.MeineApp-1/lib/arm/libMeineApp.so
  #00  pc 00000000005798a9  /data/app/com.embarcadero.MeineApp-1/lib/arm/libMeineApp.so
  #00  pc 000000000057822d /data/app/com.embarcadero.MeineApp-1/lib/arm/libMeineApp.so
  #00  pc 0000000000db7829  /data/app/com.embarcadero.MeineApp-1/lib/arm/libMeineApp.so (_NativeMain+148)
  #00  pc 0000000000800547  /data/app/com.embarcadero.MeineApp-1/lib/arm/libMeineApp.so
  #00  pc 00000000008006c1  /data/app/com.embarcadero.MeineApp-1/lib/arm/libMeineApp.so
  #00  pc 0000000000047f93  /system/lib/libc.so (__pthread_start(void*)+22)
  #00  pc 000000000001a161  /system/lib/libc.so (__start_thread+6)
Code:
Absturz
Samsung Galaxy Tab S2
Android 7.0 (SDK 24)
71.aab
vor 5 Tagen
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> com.embarcadero.MeineApp <<<

backtrace:
  #00  pc 000000000006ba20  /system/lib64/libc.so (tgkill+8)
  #00  pc 0000000000068ea4  /system/lib64/libc.so (pthread_kill+64)
  #00  pc 0000000000024350  /system/lib64/libc.so (raise+24)
  #00  pc 000000000001cd6c /system/lib64/libc.so (abort+52)
  #00  pc 000000000042e5fc /system/lib64/libart.so (art::Runtime::Abort()+352)
  #00  pc 00000000000e4f2c /system/lib64/libart.so (art::LogMessage::~LogMessage()+1204)
  #00  pc 000000000024bb9c /system/lib64/libart.so (art::IndirectReferenceTable::Add(unsigned int, art::mirror::Object*)+472)
  #00  pc 00000000002ee0c0  /system/lib64/libart.so (art::JavaVMExt::AddGlobalRef(art::Thread*, art::mirror::Object*)+60)
  #00  pc 00000000003289ac /system/lib64/libart.so (art::JNI::NewGlobalRef(_JNIEnv*, _jobject*)+600)
  #00  pc 00000000012c21d8  /data/app/com.embarcadero.MeineApp-2/lib/arm64/libMeineApp.so
  #00  pc 00000000012cd508  /data/app/com.embarcadero.MeineApp-2/lib/arm64/libMeineApp.so
  #00  pc 00000000012c1c40  /data/app/com.embarcadero.MeineApp-2/lib/arm64/libMeineApp.so (ExecJNI+2504)
  #00  pc 0000000001b368c0  /data/app/com.embarcadero.MeineApp-2/lib/arm64/libMeineApp.so
  #00  pc 0000000001b2bcbc /data/app/com.embarcadero.MeineApp-2/lib/arm64/libMeineApp.so
  #00  pc 0000000001b2811c /data/app/com.embarcadero.MeineApp-2/lib/arm64/libMeineApp.so
  #00  pc 0000000001b2c720  /data/app/com.embarcadero.MeineApp-2/lib/arm64/libMeineApp.so
  #00  pc 00000000016d3a14  /data/app/com.embarcadero.MeineApp-2/lib/arm64/libMeineApp.so
  #00  pc 00000000016e3d58  /data/app/com.embarcadero.MeineApp-2/lib/arm64/libMeineApp.so
  #00  pc 00000000016a30bc /data/app/com.embarcadero.MeineApp-2/lib/arm64/libMeineApp.so
  #00  pc 0000000001b367d8  /data/app/com.embarcadero.MeineApp-2/lib/arm64/libMeineApp.so
  #00  pc 0000000001208d98  /data/app/com.embarcadero.MeineApp-2/lib/arm64/libMeineApp.so
  #00  pc 0000000001209a00  /data/app/com.embarcadero.MeineApp-2/lib/arm64/libMeineApp.so
  #00  pc 00000000011eb830  /data/app/com.embarcadero.MeineApp-2/lib/arm64/libMeineApp.so
  #00  pc 00000000012cd248  /data/app/com.embarcadero.MeineApp-2/lib/arm64/libMeineApp.so
  #00  pc 00000000005dd010  /data/app/com.embarcadero.MeineApp-2/oat/arm64/base.odex (offset 0x5cd000)

zeras 26. Feb 2022 07:36

AW: Abstürze nach längerer Laufzeit
 
Es kommt zu weiteren Abstürzen. Kann hier keiner einen Tipp geben, wie ich den Fehler finden kann?

Code:
Samsung Galaxy Tab A (2016)
Android 8.1 (SDK 27)

pid: 0, tid: 0 >>> com.embarcadero.MeineApp <<<

backtrace:
  #00  pc 000000000001a528  /system/lib/libc.so (abort+63)
  #00  pc 0000000000365cd3  /system/lib/libart.so (art::Runtime::Abort(char const*)+402)
  #00  pc 00000000004276e7  /system/lib/libart.so (android::base::LogMessage::~LogMessage()+454)
  #00  pc 00000000001d9e31  /system/lib/libart.so (art::IndirectReferenceTable::Add(art::IRTSegmentState, art::ObjPtr<art::mirror::Object>)+692)
  #00  pc 0000000000251f4d /system/lib/libart.so (art::JavaVMExt::AddGlobalRef(art::Thread*, art::ObjPtr<art::mirror::Object>)+36)
  #00  pc 0000000000283d6f /system/lib/libart.so (art::JNI::NewGlobalRef(_JNIEnv*, _jobject*)+386)
  #00  pc 0000000000707ed7  /data/app/com.embarcadero.MeineApp-9rBjm_E3RE1me3GL0tjAyg==/lib/arm/libMeineApp.so
  #00  pc 0000000000714295  /data/app/com.embarcadero.MeineApp-9rBjm_E3RE1me3GL0tjAyg==/lib/arm/libMeineApp.so
  #00  pc 000000000072ea95  /data/app/com.embarcadero.MeineApp-9rBjm_E3RE1me3GL0tjAyg==/lib/arm/libMeineApp.so
  #00  pc 00000000009796d9  /data/app/com.embarcadero.MeineApp-9rBjm_E3RE1me3GL0tjAyg==/lib/arm/libMeineApp.so
  #00  pc 0000000000ed8741  /data/app/com.embarcadero.MeineApp-9rBjm_E3RE1me3GL0tjAyg==/lib/arm/libMeineApp.so
  #00  pc 0000000000ed5997  /data/app/com.embarcadero.MeineApp-9rBjm_E3RE1me3GL0tjAyg==/lib/arm/libMeineApp.so
  #00  pc 0000000000ed9207  /data/app/com.embarcadero.MeineApp-9rBjm_E3RE1me3GL0tjAyg==/lib/arm/libMeineApp.so
  #00  pc 0000000000ae075f /data/app/com.embarcadero.MeineApp-9rBjm_E3RE1me3GL0tjAyg==/lib/arm/libMeineApp.so
  #00  pc 0000000000aee8d9  /data/app/com.embarcadero.MeineApp-9rBjm_E3RE1me3GL0tjAyg==/lib/arm/libMeineApp.so
  #00  pc 0000000000ab4f99  /data/app/com.embarcadero.MeineApp-9rBjm_E3RE1me3GL0tjAyg==/lib/arm/libMeineApp.so
  #00  pc 0000000000edca5d /data/app/com.embarcadero.MeineApp-9rBjm_E3RE1me3GL0tjAyg==/lib/arm/libMeineApp.so
  #00  pc 0000000000671ef3  /data/app/com.embarcadero.MeineApp-9rBjm_E3RE1me3GL0tjAyg==/lib/arm/libMeineApp.so
  #00  pc 000000000066a0db /data/app/com.embarcadero.MeineApp-9rBjm_E3RE1me3GL0tjAyg==/lib/arm/libMeineApp.so
  #00  pc 000000000066aab3  /data/app/com.embarcadero.MeineApp-9rBjm_E3RE1me3GL0tjAyg==/lib/arm/libMeineApp.so
  #00  pc 00000000006518c9  /data/app/com.embarcadero.MeineApp-9rBjm_E3RE1me3GL0tjAyg==/lib/arm/libMeineApp.so
  #00  pc 0000000000711571  /data/app/com.embarcadero.MeineApp-9rBjm_E3RE1me3GL0tjAyg==/lib/arm/libMeineApp.so
  #00  pc 000000000001e131  /data/app/com.embarcadero.MeineApp-9rBjm_E3RE1me3GL0tjAyg==/oat/arm/base.odex (offset 0x1e000)

TurboMagic 27. Feb 2022 14:12

AW: Abstürze nach längerer Laufzeit
 
Die Frage wäre, was denn deie App so tut und ob du evtl. durch Einbau weiterer Logmeldungen noch näher herausfinden
kannst an welcher Stelle das abstürzt.

Loggen in einem FMX programm kannst du mittels

uses
FMX.Types;
begin
log.d('Mein text');

Das landet dann auch in dem Android Debug Log.

Falls hier keine weiteren hilfreichen Antworten kommen sollten kannst du dich auch mit einem offiziellen
Support Ticket an EMBT wenden, wenn du eine laufende Subskription hast. Manchmal kommt dazu tatsächlich was raus.
Ich meine damit übreigens nicht QP sondern das hier: https://www.embarcadero.com/de/support

Grüße
TurboMagic

TomyN 27. Feb 2022 15:48

AW: Abstürze nach längerer Laufzeit
 
Bei Abstürzen nach längerer Laufzeit sind meine Hauptverdächtigen
- Überlauf einer Variablen
- Energiesparmodus / Low Akku o.ä.

Tomy

zeras 27. Feb 2022 16:43

AW: Abstürze nach längerer Laufzeit
 
Zitat:

Zitat von TurboMagic (Beitrag 1502757)
Loggen in einem FMX programm kannst du mittels

uses
FMX.Types;
begin
log.d('Mein text');

Das landet dann auch in dem Android Debug Log.

Dies habe ich drin. Komme ich da auch an die Logs auch vom entferneten Tablett ran? Dort habe ich ja keinen Zugriff, da ich meine Kunden ja nicht kenne.

Zitat:

Zitat von TomyN (Beitrag 1502763)
Bei Abstürzen nach längerer Laufzeit sind meine Hauptverdächtigen
- Überlauf einer Variablen
- Energiesparmodus / Low Akku o.ä.

Energiesparmodus ist deaktiviert, soweit ich das vom Programm steuern kann. Der Bildschirmschoner wird deaktiviert.
Wegen des Überlaufes, ich habe auch ein Tablett, wo ich Zugriff habe. Dort passiert es aber nicht.

TurboMagic 27. Feb 2022 19:33

AW: Abstürze nach längerer Laufzeit
 
Ich glaube da kommst du nicht wirkliuch ran, das wird ja dauern überschrieben.
Da müsstest du wohl selber eine Dateilogging Funktion einbauen, samt Teilen oder Viewer...

Sinspin 28. Feb 2022 10:21

AW: Abstürze nach längerer Laufzeit
 
Code:
backtrace:
  #00  pc 000000000001a528  /system/lib/libc.so (abort+63)
  #00  pc 0000000000365cd3  /system/lib/libart.so (art::Runtime::Abort(char const*)+402)
  #00  pc 00000000004276e7  /system/lib/libart.so (android::base::LogMessage::~LogMessage()+454)
Ich habe hier so ein bisschen den Verdacht dass wir nicht den echten Fehler sehen, sondern einen Folgefehler. Es scheint ja aus LogMessage zu knallen.
Oder, die Funktion hat einen Parameter der genau dafür sorgt dass nach dem schreiben einer Message alles ein Ende findet.

zeras 13. Mär 2022 15:58

AW: Abstürze nach längerer Laufzeit
 
Danke für eure Hinweise.
Laut den Logs im Playstore sieht es offenbar so aus, als wenn die APP immer nach 5 Tagen abstürzt, nur beim letzten Mal waren es 7 Tage. Da hat man die APP vielleicht erst später wieder neu gestartet.
Sind aber bis jetzt Vermutungen. Auch hat das Tablett noch Android 7 drauf. Auf einem anderen Tablett läuft auch die APP und macht keine Probleme. Dort ist aber auch ein neueres Android drauf.

zeras 15. Mär 2022 18:53

AW: Abstürze nach längerer Laufzeit
 
Offenbar sind die Abstürze nicht alle 5, sondern alle 10 Tage.
Jetzt wollte ich ein Log einbauen, wo man die Startzeit der APP hinterlegt. Kann man auch noch bei einem Absturz in ein Log schreiben oder ist da sowieso schon alles "tot"?
So könnte ich vielleicht eher herausfinden, wo das Problem liegt.

QuickAndDirty 17. Mär 2022 13:12

AW: Abstürze nach längerer Laufzeit
 
Berücksichtigst du die Android Lifecycle events?

zeras 17. Mär 2022 19:29

AW: Abstürze nach längerer Laufzeit
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1503529)
Berücksichtigst du die Android Lifecycle events?

Danke für die Info.
Kannst du mir auf die Sprünge helfen, was das bedeutet?

Kann ich damit eine Prozedur anspringen, die beim Absturz beispielsweise Datum und Uhrzeit in eine Datei sichert?

Sinspin 21. Mär 2022 06:22

AW: Abstürze nach längerer Laufzeit
 
Ich denke eher, es geht darum dass die APP zwischendurch immer mal beendet werden muss oder auf Systemereignisse reagieren muss um nicht beendet zu werden.

zeras 21. Mär 2022 18:45

AW: Abstürze nach längerer Laufzeit
 
Zitat:

Zitat von Sinspin (Beitrag 1503681)
Ich denke eher, es geht darum dass die APP zwischendurch immer mal beendet werden muss oder auf Systemereignisse reagieren muss um nicht beendet zu werden.

Ich habe so alles versucht, auszuschalten, Bildschirmschoner etc.
Wunderlich ist nur, dass es nur eine Reklamation gibt, obwohl die APP über 100mal geladen wurde.
Bei einem Kunden kann ich sagen, dass diese schon seit Wochen läuft und nicht abstürzt.
Deshalb habe ich keinen Ansatzpunkt, wo ich anfangen soll zu suchen.

zeras 27. Mär 2022 16:43

AW: Abstürze nach längerer Laufzeit
 
Ich komme immer noch nicht weiter. Der eine Kunde berichtete wieder von einem Absturz.
Kann es vielleicht daran liegen, dass die APP über Tage dann immer mehr Speicher anfordert?
Gibt es im Android auch so etwas wie einen Taskmanager, wo man sieht, wieviel Speicher die APP reserviert hat? Bei Windows kann man das ja im Taskmanager sehen.
Das wäre vielleicht dann vielleicht ein Anfang, wo ich suchen kann.

Die App, die ich unter Kontrolle habe, läuft nun schon seit Wochen ohne Probleme.

QuickAndDirty 28. Mär 2022 11:21

AW: Abstürze nach längerer Laufzeit
 
Zitat:

Zitat von zeras (Beitrag 1503565)
Zitat:

Zitat von QuickAndDirty (Beitrag 1503529)
Berücksichtigst du die Android Lifecycle events?

Danke für die Info.
Kannst du mir auf die Sprünge helfen, was das bedeutet?

Kann ich damit eine Prozedur anspringen, die beim Absturz beispielsweise Datum und Uhrzeit in eine Datei sichert?

Es kann sein, dass Android deine App unerwartet beendet oder pausiert. Dann bist Du dafür zuständig die App in einen Zustand zu versetzen in dem sie angehalten werden kann und wieder fortgesetzt werden kann.

Die Lifecycleevents geben Dir die Chance den laufenden Zustand der App zu sichern , z.b. in eine Datenbank und den Zustand aus dieser Datenbank wiederherzustellen wenn die App fortgesetzt wird.

Android kann Deine App, wenn gerade keine ihrer Activities angezeigt wird (Foreground), jederzeit beenden oder pausieren. Sie ist dann zwar noch in den "Recent Apps" bzw. "Multitasking" Anzeige drin, aber keiner ihrer Threads ist mehr aktiv oder im RAM.

Wenn man auf die Lifecycleevents nicht reagiert , weil man davon nichts weiß, kann das zu wirren Fehlersuchen führen....
Ich weiß nicht ob das bei Dir das problem ist. Aber so oder so kann es ein Problem werden...man muss sich um die Dinger kümmern.



Zweite Frage: Verwendest Du die SQLite Datenbank von Android und wenn ja machst Du das richtig?

zeras 8. Jun 2022 07:45

AW: Abstürze nach längerer Laufzeit
 
Sorry, dass ich erst jetzt wieder antworte. Den Fehler bekomme ich nun auch auf einem Nexus7 hin. Das dauert aber in "Normalfall" zwischen 2 und mehreren Tagen.

Auf die Activities reagiere ich im Moment so:
Delphi-Quellcode:
function Tftest.HandleAppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean;
ar
  StartupIntent: JIntent;
  s : String;

begin

  Result := False;

  case AAppEvent of
    TApplicationEvent.FinishedLaunching:   s := ('Finished Launching');
    TApplicationEvent.BecameActive:        s := ('Became Active');
    TApplicationEvent.WillBecomeInactive:  s := ('Will Become Inactive');
    TApplicationEvent.EnteredBackground:   s := ('Entered Background');
    TApplicationEvent.WillBecomeForeground: s := ('Will Become Foreground');
    TApplicationEvent.WillTerminate:       s := ('Will Terminate');
    TApplicationEvent.LowMemory:           s := ('Low Memory');
    TApplicationEvent.TimeChange:          s := ('Time Change');
    TApplicationEvent.OpenURL:             s := ('Open URL');
  else
    s := 'TApplicationEvent unknown';
  end;

  Result := True;
Ich brauche keine Daten zu sichern. Deshalb habe ich result auf true gesetzt.

Zur Frage wegen der Datenbank. Ich lese nur den Kalender vom Tablett aus. Dabei hatte ich vergessen, den Cursor zu schließen. Das habe ich jetzt korrigiert, aber die APP hängt sich noch immer auf.

Delphi-Quellcode:
  if Assigned(Cursor) then begin
    Cursor.close;
  end;
Habt ihr noch weitere Ideen?
Kann ich vielleicht das Log, dass ich dem Android Device Monitor sehe, auch irgendwie im Tablett sichern, da der Rechner nicht immer an sein kann? Ich habe mir zwar schon selber einiges geloggt, aber an die Daten im Device Monitor komme ich nicht ran.
Vielleicht stehen da mehr Informationen drin, die mir helfen könnten.

Wunderlich für mich ist, dass die APP Inactive wird und zur gleichen Zeit wieder Active. Es ist aber niemand an der APP gewesen.
Code:
06.06.2022 18:00:22   Will Become Inactive
06.06.2022 18:00:22   Became Active
Das passiert ca. alle 6 Stunden.
Code:
06.06.2022 18:00:22   Will Become Inactive
07.06.2022 00:10:45   Will Become Inactive
07.06.2022 06:33:33   Will Become Inactive
07.06.2022 12:10:08   Will Become Inactive
07.06.2022 18:34:54   Will Become Inactive

zeras 10. Jun 2022 20:01

AW: Abstürze nach längerer Laufzeit
 
Nun habe ich einen älteren Rechner mit ADB ausgestattet und logge seit Tagen, bis der Absturz kommt.
Das scheint nun die Ursache meines Problems zu sein.
Aber was soll mir das sagen?
Was ist diese globale Referenztabelle?


Code:
1. Tablett
message: 'java_vm_ext.cc:638] JNI ERROR (app bug): global reference table overflow (max=51200)global reference table dump:'

2. Tablett
DEBUG  : Abort message: 'art/runtime/indirect_reference_table.cc:115] JNI ERROR (app bug): global reference table overflow (max=51200)'

himitsu 10. Jun 2022 21:41

AW: Abstürze nach längerer Laufzeit
 
Quasi ein Speicherleck :stupid:

aber das hätte dir die SuFu auch sbeantworten können.

z.B.
https://stackoverflow.com/questions/...rflow-max-6553



Du pfuschst nicht zufällig mit Pointer rum, oder mit vielen Threads, welche nicht richtig aufgeräumt werden.

zeras 11. Jun 2022 06:41

AW: Abstürze nach längerer Laufzeit
 
Zitat:

Zitat von himitsu (Beitrag 1507161)

Du pfuschst nicht zufällig mit Pointer rum, oder mit vielen Threads, welche nicht richtig aufgeräumt werden.

Danke für die Info.
Ich habe eigentlich nur einen Thread, der einen Sound abspielt, damit das Hauptprogramm aber nicht hängenbleibt.
Ansonsten läuft alles im Hauptprogramm und einem Timer.

Wunderlich ist nur, dass die APP mit Android 11 nicht hängenbleibt. Vielleicht ist der der "maxwert" viel höher?


Kann man den Wert der "global reference table" auslesen? Dann könnte ich viel eher sehen, wo was schiefläuft?
Ansonsten dauert das in meinem Testprogramm 1-2 Tage, eher der Fehler auftritt.

hoika 11. Jun 2022 06:56

AW: Abstürze nach längerer Laufzeit
 
Hallo,
wenn Du dir den oberen Link durchliest, kommst Du hierhin

https://stackoverflow.com/questions/...43581#36143581

Unterhalb der Fehler Meldung müssten die betroffenen Objekte stehen.

zeras 11. Jun 2022 18:53

AW: Abstürze nach längerer Laufzeit
 
Nach dem Fehler "global reference table overflow" habe ich folgende Einträge im Log.
Diese sagen mir leider auch nichts.
Im Netz steht bei den meisten Einträgen dann immer das selbe Objekt. Bei mir sind das ja 3 verschiedene.
Wenn ich den Zähler abgreifen könnte, dann würde ich bestimmt schneller das Problem finden. Nur dauert es jetzt schon bei meiner präparierten APP noch 1-2 Tage. Im der normalen APP dauert das bis ca. 1 Woche, bis der Fehler auftritt.
Code:
art    : art/runtime/indirect_reference_table.cc:115] JNI ERROR (app bug): global reference table overflow (max=51200)
art    : art/runtime/indirect_reference_table.cc:115] global reference table dump:
art    : art/runtime/indirect_reference_table.cc:115]  Last 10 entries (of 51200):
art    : art/runtime/indirect_reference_table.cc:115]    51199: 0x130255c0 java.lang.ref.WeakReference
art    : art/runtime/indirect_reference_table.cc:115]    51198: 0x13025560 android.database.ContentObserver$Transport
art    : art/runtime/indirect_reference_table.cc:115]    51197: 0x13025480 java.lang.ref.WeakReference
art    : art/runtime/indirect_reference_table.cc:115]    51196: 0x13060de0 java.lang.ref.WeakReference
art    : art/runtime/indirect_reference_table.cc:115]    51195: 0x13060040 android.database.ContentObserver$Transport
art    : art/runtime/indirect_reference_table.cc:115]    51194: 0x13031fc0 java.lang.ref.WeakReference
art    : art/runtime/indirect_reference_table.cc:115]    51193: 0x131da130 java.lang.String ""
art    : art/runtime/indirect_reference_table.cc:115]    51192: 0x130310a0 java.lang.ref.WeakReference
art    : art/runtime/indirect_reference_table.cc:115]    51191: 0x13031040 android.database.ContentObserver$Transport
art    : art/runtime/indirect_reference_table.cc:115]    51190: 0x1302eec0 java.lang.ref.WeakReference

zeras 19. Jun 2022 17:28

AW: Abstürze nach längerer Laufzeit
 
Auch nach weiteren Optimierungen finde ich den Fehler nicht. Es kommt nach wie vor der Fehler "JNI ERROR (app bug): global reference table overflow (max=51200)".


Zitat:

Zitat von zeras (Beitrag 1507165)
Kann man den Wert der "global reference table" auslesen?

Ich habe das hier gefunden, weiß aber nicht, wie ich da mit Delphi Mitteln rankomme. Oder ist das vielleicht nur bei Xamarin drin?

Speicherauslastung habe ich auch mal mitloggen lassen. Da passiert aber nichts großes.
Dynamische Arraygrößen lasse ich auch einmal mitloggen. Es ändert sich aber nichts.
Ich weiß nicht, wie ich hier weiterkomme.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:12 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