{"id":2154,"date":"2018-12-26T20:24:12","date_gmt":"2018-12-26T20:24:12","guid":{"rendered":"http:\/\/blog.rastersoft.com\/?p=2154"},"modified":"2021-01-01T22:39:37","modified_gmt":"2021-01-01T22:39:37","slug":"java-vs-systemd","status":"publish","type":"post","link":"https:\/\/blog.rastersoft.com\/?p=2154","title":{"rendered":"Java vs. systemd"},"content":{"rendered":"\n<p>Pues parece que ya podemos a\u00f1adir otra historia m\u00e1s a los problemas de systemd. Ahora resulta que un cambio inocente en sus pol\u00edticas ha hecho que un bug serio en Java salga a la superficie: pr\u00e1cticamente todas las aplicaciones Java fallan en Debian SID por culpa de esto, dando un error de este estilo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>library initialization failed - unable to allocate file descriptor table - out of memoryAborted<\/code><\/pre>\n\n\n\n<p>En mi caso fueron MPlabX y SimplicityStudio las que me dieron problemas, pero parece que ocurre con muchas m\u00e1s aplicaciones Java, y en concreto Android Studio tambi\u00e9n lo da.<\/p>\n\n\n\n<p>Seg\u00fan una entrada en github, el problema se debe a que Java toma el n\u00famero m\u00e1ximo de descriptores que se pueden abrir y reserva un bloque de memoria lo suficientemente largo como para albergarlos a todos. Hasta ahora ese n\u00famero era 4096, con lo que con 16 Kbytes ten\u00eda de sobra. Pero tras un cambio en Systemd (pedido, adem\u00e1s, por la gente del kernel) dicho n\u00famero se ha ampliado a 262144 (256 * 1024). En principio esto no deber\u00eda ser problema (sigue siendo una cifra razonable, y con un mega puede almacenarlo todo), pero, por una serie de desafortunadas circunstancias, Java no recibe esa cifra en Debian SID, sino que, si no hay configurado ning\u00fan l\u00edmite, recibe INFINITY (los detalles se pueden seguir <a href=\"https:\/\/github.com\/systemd\/systemd\/issues\/10921\">en este hilo de github<\/a>). El resultado, obviamente, es un error de memoria insuficiente.<\/p>\n\n\n\n<p>Mientras el error no se corrige, es posible parchearlo temporalmente a\u00f1adiendo esta l\u00ednea a <em>\/etc\/security\/limits.conf<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">    *   hard   nofile   4096<\/pre>\n\n\n\n<p>No olvidarse del asterisco al principio. Y en caso de que 4096 no sean suficientes descriptores, se puede aumentar. Un valor m\u00e1ximo razonable es 1048576. Una vez modificado es necesario cerrar la sesi\u00f3n y volver a entrar (o bien reiniciar) para que los cambios surtan efecto.<\/p>\n\n\n\n<p>Por supuesto es bueno revisar de vez en cuando si ya han corregido el bug, y eliminar esa l\u00ednea cuando ya no sea necesaria.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pues parece que ya podemos a\u00f1adir otra historia m\u00e1s a los problemas de systemd. Ahora resulta que un cambio inocente en sus pol\u00edticas ha hecho que un bug serio en Java salga a la superficie: pr\u00e1cticamente todas las aplicaciones Java fallan en Debian SID por culpa de esto, dando un error de este estilo: En &hellip; <a href=\"https:\/\/blog.rastersoft.com\/?p=2154\" class=\"more-link\">Seguir leyendo <span class=\"screen-reader-text\">Java vs. systemd<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-2154","post","type-post","status-publish","format-standard","hentry","category-trucos"],"_links":{"self":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/2154","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2154"}],"version-history":[{"count":4,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/2154\/revisions"}],"predecessor-version":[{"id":2158,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/2154\/revisions\/2158"}],"wp:attachment":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2154"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2154"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2154"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}