FORTIFY_SOURCE: FD_SET: Dateideskriptor = FD_SETSIZE. Aufruf abbrechen ()

8

Ich bin ein Android-Programmierer.

Heute habe ich eine Android-Anwendung, dass ich diese Art von Fehler habe.

  

FORTIFY_SOURCE: FD_SET: Dateideskriptor & gt; = FD_SETSIZE. Aufruf von abort ().

Bitte, wenn jemand diese Antwort für dieses Problem kennt, bitte antworten Sie mir.

    
Chandru Sekar 29.05.2015, 05:33
quelle

1 Antwort

13

Ihr Prozess hat zu viele Dateideskriptoren oder Sockets geöffnet, und wenn das Betriebssystemlimit erreicht ist, wird Ihre App gelöscht.

Es ist sehr unwahrscheinlich, dass Ihre App legal alle Ressourcen verbraucht, es ist höchstwahrscheinlich ein Leck. Vermutlich verpassen Sie einen Close () - Aufruf für einen Socket oder eine Dateiressource.

Ich habe dieses Problem auf verschiedenen Android-Geräten mit demselben Code festgestellt. Die häufigste Fehlersignatur war:

%Vor%

Sie können das Deskriptorlimit auf Ihrem Gerät überprüfen:

%Vor%

Als ersten Schritt zur Lösung des Problems müssen Sie möglicherweise herausfinden, welche Arten von Ressourcen ausgelaufen sind. Sie können die Prozess-ID Ihrer App herausfinden, indem Sie:

%Vor%

Dann können Sie mit der Prozess-ID, während Ihre App noch läuft, nach offenen Deskriptoren suchen (Sie benötigen root-Zugriff):

%Vor%

Für den Prozess 12345 würde es etwa so aussehen:

%Vor%

Dies wird die Deskriptoren auflisten. Auf älteren Android-Versionen können Sie 1024 Elemente in der Liste haben, auf Lollipop habe ich 2048 als Standardlimit gesehen.

    
Habib 28.01.2016 00:39
quelle

Tags und Links