7162955: Attach api on Solaris, too many open files
Summary: Release server-side socket after client receives it.
Reviewed-by: sla, dsamersoff, dcubed, acorn
Contributed-by: dean.long@oracle.com
--- a/hotspot/src/os/solaris/vm/attachListener_solaris.cpp Fri Apr 20 17:13:36 2012 -0700
+++ b/hotspot/src/os/solaris/vm/attachListener_solaris.cpp Thu Apr 26 16:24:15 2012 -0400
@@ -336,7 +336,9 @@
// Return 0 (success) + file descriptor, or non-0 (error)
if (res == 0) {
door_desc_t desc;
- desc.d_attributes = DOOR_DESCRIPTOR;
+ // DOOR_RELEASE flag makes sure fd is closed after passing it to
+ // the client. See door_return(3DOOR) man page.
+ desc.d_attributes = DOOR_DESCRIPTOR | DOOR_RELEASE;
desc.d_data.d_desc.d_descriptor = return_fd;
door_return((char*)&res, sizeof(res), &desc, 1);
} else {