From b017ae0ad2a01a06d9563b1697a7f90208a5beae Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Sat, 22 Jun 2024 08:50:23 +0200 Subject: [PATCH] Speed up closing all file descriptors in the child process (Fixes #835) _This commit adds to #840 7bd8d52c6c to apply the same fix to another place that does the same operation on all fds._ When _SC_OPEN_MAX (max nr of open files limit per process) is a very big number, then closing all possible file handles can take a while. This change first tries to use the syscall close_range() if available, falling back to use /proc/self/fd to close only open file handles, and lastly falling back to the old way of closing all possible handles one after another. In general, the first or second approach should be available which speeds up the pty spawning. Refs JetBrains/pty4j#147 Copied from https://github.com/JetBrains/pty4j/commit/04685d870fd09371fe8580f664be5aea41de5b2c (which is EPL 1.0) Co-authored-by: Sergey Simonchik (cherry picked from commit 3875408070358a2ab87542858491805c2fe8e32d) --- .../os/linux/aarch64/libspawner.so | Bin 25360 -> 29552 bytes .../os/linux/ppc64le/libspawner.so | Bin 75920 -> 76016 bytes .../os/linux/x86_64/libspawner.so | Bin 28640 -> 28736 bytes .../os/macosx/aarch64/libspawner.jnilib | Bin 53934 -> 53998 bytes .../os/macosx/x86_64/libspawner.jnilib | Bin 20664 -> 20736 bytes .../native_src/unix/exec_unix.c | 75 ++++++++++++++++-- 6 files changed, 67 insertions(+), 8 deletions(-) diff --git a/core/org.eclipse.cdt.core.linux.aarch64/os/linux/aarch64/libspawner.so b/core/org.eclipse.cdt.core.linux.aarch64/os/linux/aarch64/libspawner.so index af56945007e6bd913064abc6a1c2e4f4c87ec2b8..8eaf3f18eae99f76117567a8d9448fbd59bea131 100755 GIT binary patch delta 7917 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 delta 3699 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 kz3LR diff --git a/core/org.eclipse.cdt.core.linux.x86_64/os/linux/x86_64/libspawner.so b/core/org.eclipse.cdt.core.linux.x86_64/os/linux/x86_64/libspawner.so index 0e0ad421cdba026d7d55a6ab67ad2c2a5d435c32..198c2952f9373b2dee96c5c7c378a86b929868f8 100755 GIT binary patch delta 4662 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 delta 4503 zcmZu!2~-qE8t$$c&TtG0I&wKE;swYxhygj&);7jGH=Z#npb?K4F*-y%aLgiV?>Gii zIgH6m)J-;;m-yTr-&^!4qOx9_7?a0FlQjlp(1yX=xM&Q$Uv>8&`qB^PtNOpH|El`C zy6PJF#$WjAL8Nivwjr5;=3GvF%(>eZ*Tw~n(0Wg!k=Nu#I-Y+keD5@8YnG5X*$|+3i*}v?>^)B4JvEGEZJbD`MyPbf4a>$jL)Ut z`L5){Rkp~_%uiG;buz8|B2A;8B`rTw^WOV=(7{(wauU2*?e* zOEl??bb2QsnbfDa`UUa^%d(P1OJCuZEm}68D=A(6Dpy!IfBEvIrG-mM=M~!)l`f_B z;Ap=Ut5(b_U0OnS1P`Sd!B*GF;N3yQ9Yq&MzCb>RqK6_Un5RW?oP7LuMe#(7j;W2J zLy$$Mb##;~CTcI4v&+nJqI61L_()Mihfm)$3nx18H?;q=Jx;JiEz>RQqYll9=^PybVmY)kSQVQwfrHS&l?+PX;Qf!xzo-7kp* zMD$?#tOI(`lksB$?uMzoi($0qfFXk}slA8`0Oh=C81ouV{#yC_YpeqItbzalz}0|p^8P$;L? zA)ni!55s<7f%LtFKqTQbES=`c@&J1{n=c#S@e`ds`JtHSh`2q_0tghP<8VEL$)s`LqB*gTlOnX@euodWznCBJ<`QL5_7E$Cll{Xc7c6Z(y;zg+FF%ExlQ zrJCRlrZ7*P5uY(5PV4OuX6uw@%LrTW>@=G>_(L`suNB)g!8p(umxQ$J2u3EsjFelo171WSq9WFFM%rTMpZMaQ;U%q>_$~Fs+mz! z8{pGs$;5s|=Om*;cSZ{y z_Eit99@K}dZ=*MpB8l5WpGme5(ngb#oy65f4=2a;KO4w4Uqn?u3qUW%8Yc4=qoIvH zN{+KzT2&Fg6Vu?du2B`~mG&_-z%jLE?_Bei z!7f&5EPax2zOv#xE3_7ns)b7|6xG7n^f>09YJ%+vm?+mw^yzLQr<;lDYxLV;vG!X~ zhAp!PyC++%I5St)SDuL=uoAtH*yaE@a26BQ^=o~g72{4(I_an|$*FKb5*jKi8n{)W zobL5(NS9~k$BtENj-7-;#J+%mWY>fL3k+%oKG40eMX@b)O5O>b-Ys0re940^%=9Kk zRG2y22#3I41Q#He352M!->&La_9BFOAXYY+bOn+MI}U+*QUVGBnA<{wx7Z(IvZ^=? z`^#JMEf9J_*(m)T&;WsE_~BJ*O--{-gBG<+>$Fu=%an&btxEk=t>-!0Dpj{X3*oLz zKS~|ivxHIlD{PcMy!4UjPpJusvs;*n^J*EX+v0f${;-Trw9v$~e6sBtU7D6mj$NZ4 zr^S%vE%ZoQUvkV%FQ-M316S#9Y1rK@G$y?_Iq0UD=|f4*RXQ&{p-(&uj<1H_9Vkxi zL!!yGXR36O+Gl@*UT<_N3jPnv0U zMl309ru#Dn`_1w}`U{tGd?!{v5tstI(Vj|v6&WT_D;BlGH~cU>(4kKm{P+P`cY4I>VaEv;J676*m^XK zh@lAQRy^=M;22=jZADoKTy#fKwg5K*zXYzit0-Rsj{)0(oxmV0Pz^p0Gk`}r6lDr< zFg{pqz@LHd0H1xRCumLD;?jHC-*mNdWYW}HUSAKpxp&b)NlAq}s^+Jfx_@^(R%!~n7 z$VpFKOf`8Z=e>TjzV|V}l8L@KIl{GX@-z~`V|q-MM*8Yw!fD*}-uAvo7r_OzY^WxV z(b?g;{B2$St1h3c%Qq!zg0Z@Mu`d5cmygut<&ZP$HM(`2xazYJawB(}hE5+(!gJ}& z>B*5PdVDNL?AfEMOv$9Xr;jB;BWT<7A8;9_$7lS2WYHZj)sny@*UXtG`GBr#Hyu1H zkKo?CcvdpOrFzG#8<9_6+*^&ydDwI(JEOpm(j9J4-Udyi4T8L$qnhurTie zdC^GYUKdR7b5i~g?S*YZfPKfbQn6N&$k^sCaLyqW%3nip_mfhtDI;!6AeAL1+6 A%K!iX diff --git a/core/org.eclipse.cdt.core.macosx/os/macosx/aarch64/libspawner.jnilib b/core/org.eclipse.cdt.core.macosx/os/macosx/aarch64/libspawner.jnilib index f983fc2f87f42aea0ee3d6b1954e4d7643545b6d..34c41c3623f96696b81f001eede5337f7aa846a8 100755 GIT binary patch delta 2211 zcmZWq4Qx}_6+ZVp+t~SWOp-cw(#H8uObRw3iIXPa$Gk3ttW6rqLVzT!p(9{QSYaSq zz^SZCY(vQI+61w+An5E4RW?6Sr*7iC{$=N4v#sJv z=biJNd(OGvJ@@+h#2`OC$ouwWh7Is=*een`Y&iM*6Fixw%_>p-BKmxksI$^D&|;E} zQcMfg7Pa9rKo5#pYea)};8$NTNT6*I;-K_SJkVrHiq=*xlmk1f7 z2eK{X96gi0fSeQK*?%IORYwmR_i?LrVp)!!kejr|g_eQ!c{2GK;q7mvL)m(bw{; z$Zl~YKb3G5v*=mNlyy?uU{uIOzBS+~Uiq>&i8c|c+Ks;WPJjk2mlinOT#OKKGd5v6Oa>w-L*6bq(gaE~z!??uBaXR1;n5CwSI7~x zV=h6_!9ZrDNl=b?m&>_#clY+X5Q%+=g|xU>%ni~`oCu7X z!@<$caKw!Z5^%?m6n4g8!MMJRA1)YMhsAqAir7H;3FZO_(g^B1HbIG0g2EPyE_<9* zY@Hw>F^|L;-mestS9GAP!Nf-lnH}pDBu4N6F3boaiE6y`*#UmFyb$Mu-c{_#&eS9} zkQs2T3ddSOs%N>atXo=lBlQn*NUNaqvAo`g-OU8jC`j=ZkmjN@-jZzZ|0lEv z%Ib#;Jxaj%CXfnQd=u@SYuwPrrd?zz%3G@9JXED%Bk}4;Q5Q&2+#QZB{}jjjww zc-?T+DM&_!T}kW`q)fzb0qieD9ccim7m{mB%Zejor z@)+MGf2YEfJgE8yjh0u`ECA^?I^qi+-%5b*kh3ru4>~h|Tw*qmu48P>MyKZ)=V~8K zA+1;?NFTAO%Ewz6;8)1s(Kjj7CTTcI0v7tzVWnvl0G`u#f^Z4`4 zj`8_bu~d*=Q_+{Ky>z{;pLa2_uo&LEaMnYGx)Ul8X02 zMOWI3xNR!B+n&$0spt_z11fsKUdx$O^lN*rJ{40x#qfZ)TTWHcqWQI47iP_Wp8JBQ z!}BflqV;L>&l}nM5!(A^BYQtWBMTe+dek2ci79ht)MT-kV%KEMvaNl2o9!2CX@;|i z);s&Tuz?Oc7nweN0wB!{B$N+utrQ5@fx`=>5{WS56lXjaU3uX`;9+teetcEzQ-_~# z*(X>}|2}GL-1`jL6HWkb`>X4>zHA3S*SoQQ3mONp)E)t6#}?zP9fDlX=B+#66uNyb zbo-v8^T*bC!iD!Vx48({cb*^6YpGCj-`&CvY%{PbcwT zlK9Ic{w#^Btu*)ICeH*uBWwsL8OST`DTV-cp)fpFz!1PW6o$103;}$D!f^1(hY%Xk zX4qg(;7v)~h7UL!fh2zP7kV{;i@}gApyCn*b|!IM68j42obi2}uS`5UZsgU)SgV8% zU4Eyq6|FXu7f{+!N>R#CmZAJND*XphV)K=5wK`P5K^mQ{DWg{>pY-qr>kXl2_3f^I zpKx|c!P>*WoA=2|>%q<&+a@1;-yE$mT)q(Qs4LE_Rel-XmG|DFKR1u49>jOY+AqG^ zIa>;z^j|&oW$RzNtBv=6T)0ba`eJ$M$0a)*pNBSW9q+IY9`E_8ZTT&0_3fUFMZYn> zy*Ya5{H^*=4jgLO-t_f1;gvhyB;UTXX^IG!Yai%e8h!Vfx5Nuv`QVSn-`L@}_I&li v-#VP0N%xC!%h|ii@$+@|f7ZT#{+37Em2S^)2-ilg9B@@F)j#+7#J~Onu}HDd delta 2116 zcmZ`)4Qx|Y6h8O8wQD!Wpd0Oex^<=9I)36tC);#meOPhmNCpyNFmReN2Xw*|k)V5G#<1_osz%%1>(=&O?W3aG?rd=G!-xob&Ch&MU!p6}dq z&pG#;bMO0QFTZ~;-}9Ur6r=OYg$y9pL+)$8o$i&N~lO2QzRMLxoL*8`065wr-L~w->c@-8%8Nq8j4obJV>7i+X^!sDlBs`U!7V z!-2_aycx8sOF+A}2(;^sp#9tc+AsB>ZA-y}@wsZ4U#iXnIAp;LhXaqQKm;ukSfR>Z z&>jLfoH8z7p(-BGc;rKTlPV*xcm&M|T_)KpXt8ENtGmiWa2^3Iz7eFEI(R+4QII0u z!YCoka5HmqxQrR|l2P3Fh|C)X;_E?rnCY&kSEu9~*MT&Lp>=eEBj4`>shT05Albm^ zlRtbfPXMUOLK{k|)y+5qE~ zc0mebT<6e^0pn0wLHd&=V>mY&9$p%iThSi@pIU=aWlJr%&1%j(hi(sWdbXZB=ck-HeHYgF?Yq&ayxK| zb#(}v;(dOF+QzozgS&xlDK0g-K$?$&xQiZhn(u!BS!@zh2+yH7ussngjysbc;+LqM zw{-E0iVdVnrfZ|$6`M&LwU<}f)nsTIJ;d;n>MB+2gI~;eJ0KE*tsWH(hAQ8 zZp1_fJasuvGk|Ia(rX1c?f?Siz+s!Dh(s9kh-3a!-u#hb;NglJKmC>LQ;VOT+4vcn zO}`&D*M{nl$M*oZjnAxpwyhk3Tx-X=^~mf-Q@s!1>V>(uS`J~ZrSsWMa1h1)^(elv zkj^~W?jI?>uD`;`+^XYzm%d}h%FEmpu6Bsj_K=aZZ%BXog4&Z@50Sak+#u;8mkGY; zi&d{5Sgt;MkPJFBXkM*qOjQWIO1xQ)~UQJs}rx%0#n|TYtE(64(LGq=6JJ zVW208tCP6jLDziV&D|&!Z+>p(C$sR1kQ_)(q++BJdhyFXyB#?eTqDx|YKc3~H0yMo zMI78kC+SP5Y1HaJpEYUEwZ~j9%$xCi*E?@-J2`*#j!R{(%hm5bGwp&sYx#`xZRNj8 z|E@l{xHod_Ys(*-UjFImR<5n!#<3dfiN_}@8$xIM3TEwFT-LERbLdFVcNsBf;7Vhm zbGB#J@0pQ3*i5}I$;azDe%Lg+HQlAyh9jqAYhGMfzhTjs?ER@@3mNU(KT3p^U6VI| zke?a8*lM_uvFlW8D9w4cWcgp|)pe27zFo^4ulU}mtZd)?RMDpeQ(XVtck^T2s(Vdy QFYQU~@A~G!BMbBX17~ZU#sB~S diff --git a/core/org.eclipse.cdt.core.macosx/os/macosx/x86_64/libspawner.jnilib b/core/org.eclipse.cdt.core.macosx/os/macosx/x86_64/libspawner.jnilib index f3bc76b697798969cff9e5ba5080c08e1397ce59..5f3406c40e95481c03787dc5e5f73cb08588d9ae 100755 GIT binary patch delta 2511 zcmZ8j4RBOf6~6B#+hhy7ZQV)>^lJY3fwmR;#r`Y3$%|qjB7-)23pL-+k{v zH8*qf&N<&X_dDm_bN9W86H4+?C3m=XxSCnxgEsp)T>azk+*QF@4e`n!bysVQZ3j@g zk+Gf! zM4hgpRAjb<#lv}N+(-sz3Wnq0-FPBMgn4h1A$60t}(loK? zT3+j?*+t>DO_sAZrJEp+MRn7dnlI_uz)oq;dUi&}yA}r({?(1Mj#I~I5ai%x165pT?atqh*iVfwxIiU)waMDe!tfz|AdPXbH zypHN&nA0;aiLnq>`X0aK6wVVzu+3g)U$cyGEk=jfM=&KyA0j5(d#jE7-6E2QQxs3y zh;AcqTtP}GLKZ6RN>}ZVJo8tA5g&ebK953J_pM*2#T7aj1eM*2kk z4enlBi#O6k^-J7wOY;mh(qr{2-ERdg&+bP0L;XG68=!%PFY|i?G}*9=ud1W2;3MvW zEYWnm7o<|KBXJBD0wDz6vD3?L!r;HL%iD7M$65}OQdIARSi~b zZU!pcwH!{TR4+y2xSn|q<*)QJ_L6oEhdrOs9-euH156nOrjFfbEny_eVk>-7b4-1B zscjNs-DOLyZJ8F`jwRb~S$dC1mTce$c>HuknoO71P8p;V2tx|_jCNQ&0oh4lW((M@ zR7DQfjCLkvoJlY>Yn{32IxDL|%^4#pLU1tGh`-8}vb~#awtmU>fW>AcH)o2V`iyjt zROzpvM4>^w%=V6gvWzp>(>6$Onh@n02(tW4`XJoZu`Ek~$M~ms3rK2iUQI8y>RbEo z0Au1~G6_S7;sWq*5^S)*X>oD^_>Khs1>@@XOrtE0L3#%KSZFqrJ|L4!NfWjLrVE+A z^suxI!pPm{TJtb)Dc>y z_~=uia6cTJoj0{}y6G_yuA6RL&^i6OS2O9)As02R%Caq4f9Qn*l-r&czgFq{q4lc8 zfNnq=F|l8z_d^@G+Cp!)-Nt|ErR&=V`6(~u+Uu)YQK@*>OFwL19-hU!2sdI{mkn(9 zw5d(2&m0Vhqh5Nqy_NsTOa4g5HEuYXpZ@K2&#Ghcb!Hmp#Gi4c@cV0ZQ`v8pJ;0}6>SFrpwGJYk{C_BaP7(Q@6djjU< zDwqqs66=%Un;5GA^eU$ZHtawSrK|Eh$A`+i;2Mm^q#VmDv7}O{$|-}!5jN~BP>E}7E#T;D9Gx}Lz{VrWlJPe;c2v0A zu@t@?*ivd7IJsgAq(RKBn4iVOh@k}-zD?LR%>VQDFZ6C@chI`^UE@EwvBLFV)1%^u delta 2364 zcmaJ@Yitx%6uxuYg>LCSXuI7$wshMSj;pA`OS4@X%wH2^ZD~Y*Da$~dCUU9|Y0_&= z$_!ic(WV4h6|HVOG!)o^_#lYxg59%`7S?PKVofoyngd1bTVEOp5m z$m>K|Q@S$Ua@5nt?NLWtWqf^Zu|Tg@vCx1KR48Zh0ZZsLAG7Cer+@p{dwC&G9+GxQ zzaw5rgDnM~`(@1Q7(b!|J>ynb&Xj>!LgsOC7~w9M?$S@P<^~=qV|yL7b;{F-#YRLI zBGx}OPBo0zlO<;B7F&o#>n~%!Ii^?KE#qwmG`or(Z73Qupcs!7y6Kx z{+Wp=CgSKr+QA<8vIPSlP`i&!$*-mJir8EEHS}Z=YsoL7;UacAU!=B=j*BWqlKc|MQQJ(95gSQDg}W5N?zp*4Q(9&9Dwe-tAR(R7 zZESW%l|sopepP}>J8^|}87Y)NNxs??dWDyP0)vd8Oz#l67J!I6AgdEYnGY-VWgKZyn{yup5gR?6Ex`T3c;xAf z*g2v}M_-hVxuQ7Xe6C&zUJ=xJM{$K$8Ih|InY_g_9WeBjd>X)1yU3?%hu#4NYfpgY z6$h|!BViSj@{ z^&FVZ!6z_ck$UrU;3FI_{TC;zDIFp>+1%3d$#Ad^izeNcHHU_9S+nC?mX;^pRKs(5 z&0%m6&6vykt|y?pc1^$GV4svucNq*gQpLR9tq%66bcWCxpIUAggkPCFXq&KseKTmg zAh1ytON5gwRPm8e68HP}Q{h?7!ga4p+S5cw)A%1ON^72?#3PD #include #include +#include +#include +#include /* from pfind.c */ extern char *pfind(const char *name, char *const envp[]); +static int sys_close_range_wrapper(unsigned int from_fd_inclusive) { + // Use fast `close_range` (https://man7.org/linux/man-pages/man2/close_range.2.html) if available. + // Cannot call `close_range` from libc, as it may be unavailable in older libc. +#if defined(__linux__) && defined(SYS_close_range) && defined(CLOSE_RANGE_UNSHARE) + return syscall(SYS_close_range, from_fd_inclusive, ~0U, CLOSE_RANGE_UNSHARE); +#else + errno = ENOSYS; + return -1; +#endif +} + +static int close_all_fds_using_parsing(unsigned int from_fd_inclusive) { + // If `opendir` is implemented using a file descriptor, we may close it accidentally. + // Let's close a few lowest file descriptors, in hope that `opendir` will use it. + int lowest_fds_to_close = 2; + for (int i = 0; i < lowest_fds_to_close; i++) { + close(from_fd_inclusive + i); + } + +#if defined(__APPLE__) +#define FD_DIR "/dev/fd" +#else +#define FD_DIR "/proc/self/fd" +#endif + + DIR *dirp = opendir(FD_DIR); + if (dirp == NULL) + return -1; + + struct dirent *direntp; + + while ((direntp = readdir(dirp)) != NULL) { + if (isdigit(direntp->d_name[0])) { + int fd = strtol(direntp->d_name, NULL, 10); + if (fd >= from_fd_inclusive + lowest_fds_to_close && fd != dirfd(dirp)) { + close(fd); + } + } + } + + closedir(dirp); + + return 0; +} + +static void close_all_fds_fallback(unsigned int from_fd_inclusive) { + int fdlimit = sysconf(_SC_OPEN_MAX); + if (fdlimit == -1) + fdlimit = 65535; // arbitrary default, just in case + for (int fd = from_fd_inclusive; fd < fdlimit; fd++) { + close(fd); + } +} + +static void close_all_fds() { + unsigned int from_fd = STDERR_FILENO + 1; + if (sys_close_range_wrapper(from_fd) == 0) + return; + if (close_all_fds_using_parsing(from_fd) == 0) + return; + close_all_fds_fallback(from_fd); +} + pid_t exec0(const char *path, char *const argv[], char *const envp[], const char *dirpath, int channels[3]) { int pipe0[2], pipe1[2], pipe2[2]; pid_t childpid; @@ -83,14 +149,7 @@ pid_t exec0(const char *path, char *const argv[], char *const envp[], const char } /* Close all the fd's in the child */ - { - int fdlimit = sysconf(_SC_OPEN_MAX); - int fd = 3; - - while (fd < fdlimit) { - close(fd++); - } - } + close_all_fds(); setpgid(getpid(), getpid());