From f40c48151c4b2f4d89ff4cc218304d61f8dda5b0 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) 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 and squashed from commits: - 7bd8d52c6c9db1a1a5fd8fd672765ca49b33d9f0 - 24d9bd18346a690e988529b5002ff88dcd04bb32 - 3875408070358a2ab87542858491805c2fe8e32d --- .../os/linux/aarch64/libspawner.so | Bin 29056 -> 29552 bytes .../os/linux/ppc64le/libspawner.so | Bin 75168 -> 76016 bytes .../os/linux/x86_64/libspawner.so | Bin 24040 -> 28736 bytes .../os/macosx/aarch64/libspawner.jnilib | Bin 53454 -> 53998 bytes .../os/macosx/x86_64/libspawner.jnilib | Bin 20184 -> 20736 bytes .../META-INF/MANIFEST.MF | 2 +- .../native_src/unix/exec_pty.c | 75 ++++++++++++++++-- .../native_src/unix/exec_unix.c | 75 ++++++++++++++++-- core/org.eclipse.cdt.core.native/pom.xml | 2 +- 9 files changed, 136 insertions(+), 18 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 a9919b4ca52ff01c8d2e2d098fa95d28211bc505..8eaf3f18eae99f76117567a8d9448fbd59bea131 100755 GIT binary patch literal 29552 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 E5BM8Sy8r+H diff --git a/core/org.eclipse.cdt.core.linux.ppc64le/os/linux/ppc64le/libspawner.so b/core/org.eclipse.cdt.core.linux.ppc64le/os/linux/ppc64le/libspawner.so index cddfefcb258365172804b56bc18cf99e6161bc4f..b472ea7639ecf67245f3e137cc0de344e5b0ea71 100755 GIT binary patch delta 10594 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 delta 8447 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

v5SQCdK!X3lLSdKw6A?$|AD!K2dbosj|UI z_j3uC2~R!Wz$o7hOetG9wx5T$%c7)jdfl3zasgJHfZ>!vF zbH+Y~=AVZJb0^bj@SC|C=-VCto*POd*vHF&d*qkl0P+o<>&TwBfI{0Z`a9an+m3Xc zneWy^=3q(|`9sGMRc3k~f z!9z$Ld$Y}kw0p6VFBD4eWk}vo*o>{dkdEKqiwL0Y@^wmISl(tBmKlBtAc3S$wKt3s z58E`Hh>`T(7k_|gPurMm0G=|rHK%Y29zwh& z?9B1E7#G!1O8_35v6m-H3Zh3_WoJJUp56E~I6L@axC!@F{?9^eP{Pz5*HLR!mpCQR z3m%qeCPrf9C>>3bZGqGtbkwHP%Pm;%tp=lP1X{uny5%}Qo5PwqTxG~fkIR#ZRGC!lZ|NNK0eNp}>A-_h$_Y3T>%Fhqc^uszs9YnRDSgUQaG?j;6$V6sDd|= z0!=5MR~2at+!MG@gFEmHnUb*K15h<^7e8Azk}6GL6#^$5Z&cX{*&qnL8i8j7Zr4Qc zM}d1a5uX!ymnN_QRgb@ZW`8`NsW@abit+{S)hJpaaG%DZ9Rlyw@c&WOqZz_y5l8z! zUx@pWK=GuxTr-sJ2t`EWXiN~xBBoknc$UBmH2ifce+0Ad_v}^)8c*L+6=@>w6*$rG z>-ZXNBwZT*RDt&n^9%cPk-!F#xNsSEsX|rc-)BgDiu2>8StDNthWVRSeoe%O1@6`8 z`M@9u!~#*eB)V6oW@-)m5>Y$2Xqa4JqGM(mNyT)<#P7u14#m}*T|;Q^GZte);;V+; z8GiXse&zOn+!KP@=b^BfX{V(eeo!`>sMWO`VbgtbP%CU{FQ8`0abu~K_AwoidpOh2 zf4g_e%P}Cl2xJ#)oA95A+JEe-?6q?Ad z7FY2ryUaja%o(9bdj)j`Gssg*jXc+ME)#V93s*_zkM@Qu7=PaxuDxY*Dq;Kq7bQj> zeNTkHu_(qa@U)k3z1+($c;;L!LfBWJ^pkq)HBSg@2jky(Z#}8Fy;4c+pP9nQCBjQ_ zPd0o_c1TIlMI}XpipX)rdXTWLy~ErpdgjE`(Ow^?Qx~r#rx_OE<-Ho+DpDgsNsIMscmdfME)7)6qC~4 zbDDTMBA0MsBhg-u?&IWRdJB!FNtKl=pIB2}S(!1_l{uBHs9#ZCS+{XhMm1jV4HMj% z@{194{xO@C&ZF|PHtINb!A5fe<%(Fk?^xUf`u70&U-9$+)yu63)M-|?;c8tj_b^!9 zg{$>$+3cWBqq+(AhRUT5nr&1!-@Z_J2eyYl1k?|LUY-1jgJu}jJviRa8xv`EjJo$$ z>lD}UT7mb?=AbaSE|Hpy>Q-D|Ebl-uv$_RW>teYlk$F|3NPA0;8Ix!+#jW`KWa>1i zmy+%B_GFr4PzQ9Ud@7md(@xotLh~(sR9Vza?0*pOVQcdmd1(rrXdD=)klG%Qcc##6 MsU=oEokElT4|=f?s{jB1 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 476ea56bdc0b515202d5e825b8d6f2c2b335b255..198c2952f9373b2dee96c5c7c378a86b929868f8 100755 GIT binary patch literal 28736 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%0DYWHH6RJ zQNAZHV^q{Yj;;?>zCTdqDN**L;F0{VE@3e-s_2a>-{z|%JzLokUT@`|P|#av`ogBy zE4#Z~3a+_xY;L4WY0gcuu+cL&1vb%1AhHlh3T)8`u{1`On4En}TSx zTg-64x5tZHd9k4TIh5RPz+V%p3ls|m=V0RIh&fgW?mg$?0f)9KK`r`bxu~tKMdu8K z??A^vKMIDt=#lVJC`jEB6!_a;RbCwywGu&3MW<`1BcF=OfLU8zF6sa(0jU%24M-ro zfqD!fYAYpD2MP4hI&Y{p0P6wM8w>^fRUtt*bzS`SD5e?q*ER^#4=JB%hDCMAZ`J@u zhKy6jrl<`2f&?Q$6#5P%YR$T!Z%;tf`phZ}*$QtBa$;n!uZBt+2=1kN1^s(!h0pH~ z)YTDchVJl&MO{#h(VFUA{=&LY;d1z-9-|3?AW-fzeL#2BVH{G7014iMq#Biw7aKQk zTD#7>q;RQ~T2jdIHdE+7VWl$h456v1pj|SV@8o5ObNv(0$P`m}4v}$idUZ7>)hyvw zw8$mZ=TR;-z#2)XXEytD+n|j;n>FPv zZlkNIh#A8+`WI~SBR0C4T9`Yl#9%lHcOCMHVA$wtieR|~HoBVnm|kq7>p7GdD{S;^ zmXx;=8=dmjm&ZoeJ|f;08yyW`UE6K+$re?Joi_UUHhPtfo@=Am+URI->#DcWr&?4Y znr!qu8@<&=r!|wl+HG|E`mMu8r)OAw9kkKy> Y{X#7a*kz;JmuTHK`V5kb-{W>j7&}Gma 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 N71w(bSodW8{{tYsFE9WA 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 274d27a42a8e9aef586a340396a254990701f6b4..34c41c3623f96696b81f001eede5337f7aa846a8 100755 GIT binary patch delta 8250 zcmbtZ3wRVowyy5Z6EGy<5kin8gb*Mgc~1g?3`7Njnh0V*&@tu#F(H{vA`b(0*yt4% z{W2E5-6iZ@+$0JN#K*MHEI}5LN8r<4bk#fIy51R7%>8`LxMsQk>8^>B!QK6K??BD@ z|5K-`PE~c+-_tp@N4dCHY1i(0Hv+>9!-y+9DkP2{Qxc@j z+^tyTi_yF&=;?(H>Z_NrCnd%RPC)59!q`o)ZSR5yGd2>q1cg4MMHvg5gpy9(21g!e z%)~$;5HdA8W*TeZ8 zF&Wb9-H*jQFUd2)`J&iIdYYHzi8`s2;sm%{ixaTDeJVf^X1 zqRGETjZ4{f$gP;Y)1|P7Tnh7kd+Ab)Gt}&TB8(S0=sb7=AUcAm_!%|`2e=mpUOr_hVOc<4o6yehGH_jFI2 z{HP>97ux-5{31!-5X%3SFipNalut{{knZ8D6DKPJMg9El#OjfKMYo!aLH6;Bi5unV zp}cC!nbf{8xWh5#j1Nr4s%7UIVS96pTn^?MnQPs5B;72@H-_+6r#>R@4&g<~Rq~h+ zekl318>KvIYcI0pQCoY>xVhBUzH|0mYHQ#3#$1|*{nX%GT6OzZ^XJh#?2*5mM;C!T z{qQ^+u37tDmTwDzJ-U;>Ic<*GI>ED7ncz9t8so7mF`fgh<2@b9cu!~RIM0PO%=>vM z^M0{{dA}@X-iynacT_O;ONm9yYR?kJUW{REY=?5Qhv5?HY`xXvT+F;n8G9*+{NS!a z=2d{(>GA@072r!fTwr+da|DmJV`gn1 z?1edIuQQc-X|VnkmnY>~XVxe&O7KhEpc}%O_ja`NB}mv+t|u7dc#KvH86k-*oK|Do zm9?Jv!TfL2W2%dpmPet*v^HTi&KP5DXoH-^X775`b(HJt9E}at+{>6Y8$S0kv6lYv z%go-j6yNF>znE!>6u+3iIdgn%2~}g;`jz+$94Q$iux!+Ae<9QQF;jN|(cu>JGQn$v_;RHUwclUZ8=A2+8@pBMx{7hXH| zZI5!RXD|qj;#kIi2k}Q{rl^@r`xG8`=H;_#S4ur&&>A}%-HvozbC~u4VqJ4CU#a%i zQcsvK7OA>YnRbd|Q-3B_S*2$|tHiTXXH7YaK-wI-ltPiJJ|NO{r7-PX>Li8#GWAY5 zB$!`Joh;uS#3N>vtF7$JV6)UYSjcRyP?pir8}DfEwK#CM@4}^>1$jb0m^OTnm?58j z-@#V_-(d5?&P%P#)}vVd2s_l@v2f!GZAYK(kxWDX+BK9%s98gwnscOCQ-?Lih7L9d zbq*?$&4rD{v1XsKFyGeR8jnfEJKj?Cj=UX;#nD-4al}jEHNIN{u{adqM;(*GN1ACd zfU%lU9ccG89q%J?dBfk{I@#0SdYcCmR9~b`rIn(Yads4r(q&uFf!l&kCE5c0bW@miEA@}WT(l)B_5dn~!LXFL1?hC5y>%6^3<~H#=d^FM zXKuv$FF9RfP)zMJMeHe-nqo;whi$78a^}bS@tuRsF`a|G!8YuDUlBsjd_#I5HM;b4<{Q!@(hBJmjTI8Rv0Z zAPJC}V5Ao)D=wVQL$U%H8YU}{B>nQn{pAF9;n37&1t)pG#q1qYmEBCc;s82#?>1!R zO8)Td>FP5~dz+lk&>j1eM$nOcOlZUfj7}QidICo_$Bh7CyAy5b$UXym0Rl#XMo0D@ zWu=FX<`*DnJ{@sA;df+1^ytXG7wzcCR;dvY7dJ%ZD-4Y5d$|iDxEcN-QBjRc%y$D( zf-W3rG}WO5A%<>9AWlT@BDAFhJ7F)FkYMJ|Cb(EvI#;t_hM7i&YthgrDui8|j0FFH zfqj~S<5<^}Jca*oRb04*X(~lp_~bb;DwGxbsg;pujnQ_$m>iv}dz3XES1Hp5B%0&| zDCa7Nvvl|*CsBN~aZe0Qas?&{^>QXL?-ufYwbSboBW%`pyD8stW(TKEC z)Ju|Cdyl`77L#xaUOE^_UMc!GIN7&gaj)o-7<*U*`6Tf*aFWD5e0zGl^lQE+JwE}5 z-(zso`4;$8Kw5W%52mN6&m!Vyg)2_9jx*-aUU(Z$y3)=c>u>J7q=Z~{+Trl|cLYrR zmlW)3nvS1>4Lj*B7qGT}E?}y0>;@`W0j-L1xq{Wg@26ltD`0ma<{t@IG3ti|O#M3w zrXuK{E7;`%7K3(wPryc?&L?1mNx;;9Rl(NM06qo#{|ne8?Ju~s^gX>?!MfLEBudgH zzAZCVI>0+KOQnNc$}&kicwSb4)XTT%_+XYQt>)?3rILw1kZqC5xI4R8D&cuKE2J;^ z!#SnWc>b51SET>szcQ6d@9=L;Ch7Nlc5afik>8jbGwuc4Q|+yBcq&=rpI0YfRiydhNIyJ~<2QgGw)^2WKWz2G zC4M-~4@c&xKXp2g{S)r`gW%9hIx0d+{yI!LKFUseSb<|x}o+8{66p@fzJZ> z2z(m&guo|&|19u3!2iP+=EtlI#@nb8yh!SSXPm%q04E9jDsZO2uK=3`ei67>;Df+x z1>O%_%lGBSs5^vbFFd~z_&31&1l|q&s=&_z9~by3;130U9M~-|2mVgrHsE0VN}?Ym~d_!W20i3WS`8~d&x{B|ezEq&H z>GKeZPnNJ|VXqT*m9Q1UT7}&z><(df3EM903&J{tJtAzMupjAGWy~cU-w3Pcj)X?h z9PpVS>{MaXgv}RriLf^bd%Li;!fqD!USZpWeU|J7ln&u|QP>_~PY8QX*iVHW5cWr5 z!{$?(cw7-SLD*Ts<_dfDd@T9n3m)wW!u#9co+D~`ZGB^9MRfyfV+~89%of0^3L+&$ z?y_bOUIkpaxw3pCk=uQwlGu8%s``c+!dAl8hU&VeDx#Z-HdN|iEfUDO%BIRXy^kG& zTGeWOur{4Hl+`s^o2coN#H;Jen`()*>#VV&dR?_%+d;ghx>m2W`-pWN#X5-ATPy2` z^!SLF;4$LX%7%t|eZGBClnP#L)l)pDSJpRHZ`Ruzi8ys*vbcarx%Jez38ANTs8tXGQc*9U~?ZQ!OOr=B6y7CQryj}37 z`WlNq8OM-AUzQ%7ZfPv9uhTc<81bfZY(ZI5lQDbpENUu8!amnIa@|!|TVGxyrcaJd zWz|hqV+t;vH&i##Vlc_Vf>{VJJ3f8MQ|iqBf0n$QEnU7Ip~kwnDhuuBW;c z_&QdOzcHZdjLbjpovL=c|O8vH52D^d*JA^3}e|6cF`!9Ni^ zYldHY6&bC^`&|0?I&cW?>);!~eI4Yc8}Z*!hj;?_{S_w|ud^fYN__KnqaKGo8;$-? z#2ef!_^2xlz70mDfFlWp<8>I~VS@iv@Qz7FeLm`_J`z9k=u;~_0mT0Nq$I^M%+mn~uvyHGjg?nd?!G9t6^h|?q z72KL-@cRW%5be3(ZPWO~qc5xY$q9j@|Hfxr0FMjcQv&$R0G<}W^8$FmaL$YW5TzCm z_pwz0+!Dao2k^Q8zA=Dr4dC|;=ls8r10U{Vdjfb@0JjHlEr1^m;Ku`a-*B$7bHg3% zd;q@?z`qXQg8@7kH;DhnMg;KKVSF*phG7oIt_t9$0KOoAC*cB`%J;m}y!0BNYf;cC z!@Cr=6r~7d8On7i*Q4BkQjCJfKz1X_a+GA0X(%gDhI-5Xw|eW2Jw8eqJ@mL>JSgy_ zlh;kH7Rqc$vi=P%HbhwehCK4^CufI}1Q34V-A9$F{fw3*KD1FX(&sJ+9?% zH>{4*Iu6>-9vUcq|F*30UtXQK&9nHkmC2{4ZZ(~^*EJn2P22mN?T~@9*Y5+I?6~*}LfI_ARFOZpfPdkf}iJtGUS? p|LW)7=X!F}{x|34o{!bATdznPZ8E>N@7>1=Gm0XvKY!wz{{t2LV4na0 delta 6364 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 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 f5fc0ca37d42d57b1fefdf7c13d9659445ef2ba6..5f3406c40e95481c03787dc5e5f73cb08588d9ae 100755 GIT binary patch delta 7282 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 DI!w%t delta 5773 zcmb7IdsGzX75`>d6cpU$u_*XN-Ux~&B&gBgW6fxM;9CMXimAqKW;pwLP zB!#arjga#AcGGyNlD}dqjvy*`q$i?(ZM@9crMZul9K%!kE1koP(?B!%R15kDs@ed2!WO@h+%v`jL$J2ke7_)t45{r9`h=>EQv3%6$_Pnr7|ix@MiO`MU^$ytl&pH7j2ndtDAC@#%3{ zvOj@W#AV1|B=7@qiE>*4eWirnvfgyUnB=C7g~9ewN`#UmhZPdC4U*q z2PSTie_`QU5?_pJry=?x60O`aEW?!;1EkuTl?G=sGke$T$}Z{#)860=LhB5eJurg= z+eNiChA4>?e?(?H9)tl&*@)HYjw99?P}C1G{AM#_mu#1@*uARF6N;u(X>hhOvuB6s z!s+VP&cddlhnb&43Zhr1roGW8L0=^4(vBDs|3gAj@JsUIxBdo?vy|Bw&jdYWIL(DI zLTFZPZY=}65kTmG%$NvO8vv0)O8TD^lCG#ZRqJ+~9#YA+0B%vY!_pw9dS zn{|h4$l(-WFRbRN?Qr-$OocK|MrX7wWKENxdhNZg-d?lE zj}Cp#o7yU98hU!oUaIMee|jRkX-6USVN#}sDWgcaODMavQDMse#6r0i!b!J$&Tef0 zxbsx?ea`Eux0-_d4hwo-W-gLlRlSuY`wL{McN5qP5ik~!s+Uyf@k_QQtQ_;%nx@%~ zoBhZ<;?)ltK9JOfO-SLFM9WgN41G;Kofmj5v29>|=ZIA=Y8n8>-VQgbAu)USwxlsR ztA+J)2trr`F_nsMdxthv$crJrfH;{pFowUEG-8Pa@!iw(9k!!Z1R+MJUB%qpt-MOg zRH3}8T?$ivO-l5dk(?&CM)L*9Bc~sNiLrP-+hxTUvlUaR_@a={J<60XRPO?c+lyVn ze1cc@eB2JO?jy|{&0kBNWqDIL!M;L0VA|V5_`j0pN&!A&)G+yg1w|;=)uh@EYo18- ztJ+#H9WB@%WiZArUWADB#OtEOYwSb4;s(ShbyMaGtv3b6LMn z+DY2&DB<&M>d#;B8P*U!=aJ9px=*sweWvvL6nk#?T|RG!41^c&gWwQYhfDiCdcJ2H zK8NHG6XMOF;PTL3Oa?6>5|I)^yNO19138ASd`=5?=^5=djw!0`M1%7LMzTyq7O`I} z2GtVUy;^}j5{=yY3tX~36gM7c7wJPGGkqwl@3_%7TWEq90j-uuJSfC^6*yrnUu2)msQf$VEwRC{Acg zh2nlFD99NCB?nZ3u)IOcSPoo? z*H%Lz5Z>`X{KD8FbFU1dc(Tacs5vcI%}(tjAy1p79K^dav*P}N zz+w9$j8I7Mn*1qG&MK2$=DV|$)D4u2lw$iPAW|g7G~GHV9%TJFzm}B}8Ao>hf??c} zog_u^ob2)PA0qgw><6W1`GIU(%wI+8bKN+CX;b-?>=EfXm;=Rsq=O_m*t3f24T2Ai zq*?WyYbW_Jo{}?M+RCTqOm-E+zBhfTpvwhaDd=iJ9}{$~pz8%K6?B83n*`k~Xr-WA z1g#ddMo_z;b%HtseNxb!f z9n}QSka}xXwE*pXz+OSR4uZAz@)`m`0`~H{y4pH|odQ})Yez+6y~}kO$Z(J zHDyl-qi(`=P<b)my@1FbgMbNbtgB&iw z5Lj?{aA30>kW0Je)`;T#BI1jhr6RY~Jt!b`MYYS_k{f^RNF%xmP(+4;r|&$v<`}pg z$5!tm5EToi_tFkE~u<`qh;tMpzO+Z={# z!muL@?+(Lz!*C!Bzi=<+*APR?y)xDshR=uLi(xnzhC9RXl`#Cbd+|7S^Iie#4a0-^ z3-cyUNkanMy&dA_P=08opOcc>a0{s|l!~K7? zZVNs-%*1;Z&5slB1@U&k3qh22Ub8rlpIp3 #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 exec_pty(const char *path, char *const argv[], char *const envp[], const char *dirpath, int channels[3], const char *pts_name, int fdm, int console) { int pipe2[2]; @@ -107,14 +173,7 @@ pid_t exec_pty(const char *path, char *const argv[], char *const envp[], const c } /* 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(); if (envp && envp[0]) { execve(full_path, argv, envp); diff --git a/core/org.eclipse.cdt.core.native/native_src/unix/exec_unix.c b/core/org.eclipse.cdt.core.native/native_src/unix/exec_unix.c index e393cfff6a0..8afc663cdeb 100644 --- a/core/org.eclipse.cdt.core.native/native_src/unix/exec_unix.c +++ b/core/org.eclipse.cdt.core.native/native_src/unix/exec_unix.c @@ -21,10 +21,76 @@ #include #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()); diff --git a/core/org.eclipse.cdt.core.native/pom.xml b/core/org.eclipse.cdt.core.native/pom.xml index 610d53b296a..a298d1436d0 100644 --- a/core/org.eclipse.cdt.core.native/pom.xml +++ b/core/org.eclipse.cdt.core.native/pom.xml @@ -23,7 +23,7 @@ ../../pom.xml - 6.3.400-SNAPSHOT + 6.3.401-SNAPSHOT org.eclipse.cdt.core.native eclipse-plugin