Fix socket descriptor leak from Zygote to child app
Due to an API change in LocalSocket, Zygote must now
manually close the FileDescriptor it created when it
registered a LocalServerSocket. The LocalSocket.close()
routine will no longer do so.
Bug: 12114500
(cherry picked from commit 70ef29b04e
)
Change-Id: Ief23a3c99e007dc4aa6f94dfb47a1b2b6c854dad
This commit is contained in:
@ -192,10 +192,16 @@ public class ZygoteInit {
|
||||
static void closeServerSocket() {
|
||||
try {
|
||||
if (sServerSocket != null) {
|
||||
FileDescriptor fd = sServerSocket.getFileDescriptor();
|
||||
sServerSocket.close();
|
||||
if (fd != null) {
|
||||
Libcore.os.close(fd);
|
||||
}
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
Log.e(TAG, "Zygote: error closing sockets", ex);
|
||||
} catch (libcore.io.ErrnoException ex) {
|
||||
Log.e(TAG, "Zygote: error closing descriptor", ex);
|
||||
}
|
||||
|
||||
sServerSocket = null;
|
||||
|
Reference in New Issue
Block a user