{"id":446660,"date":"2025-01-31T21:01:35","date_gmt":"2025-01-31T21:01:35","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=446660"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2025-01-31T21:01:35","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=446660","title":{"rendered":"<span>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0421 \u043d\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0430: \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043d\u0435 \u0440\u0435\u0448\u0430\u0435\u0442 \u0434\u0430\u0436\u0435 Rust<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430\u0434 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 EdgeDB \u0438 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0441 Python \u043d\u0430 Rust \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u0437\u0430 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0432\u0432\u043e\u0434\/\u0432\u044b\u0432\u043e\u0434. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u044b \u0443\u0437\u043d\u0430\u043b\u0438 \u043c\u043d\u043e\u0433\u043e \u0432\u0441\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e.<\/p>\n<h2>\u041e\u0442\u043a\u0430\u0437, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 ARM64<\/h2>\n<p>\u041c\u044b\u00a0 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0438 \u0434\u043b\u044f EdgeDB \u043d\u043e\u0432\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0431\u043e\u0440\u043a\u0438 HTTP. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 HTTP-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 reqwest. \u0412\u0441\u0451 \u0448\u043b\u043e \u0433\u043b\u0430\u0434\u043a\u043e: \u0444\u0438\u0447\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435, \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b\u0430 \u0442\u0435\u0441\u0442\u044b \u043d\u0430 \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u044b\u0445 \u0430\u0433\u0435\u043d\u0442\u0430\u0445 <code>x86_64<\/code> \u0438 \u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0439. \u041d\u043e \u043c\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438 \u043a\u043e\u0435-\u0447\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0435: \u0442\u0435\u0441\u0442\u044b \u0442\u043e \u0438 \u0434\u0435\u043b\u043e \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b\u0438 \u043d\u0430 \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u044b\u0445 \u0430\u0433\u0435\u043d\u0442\u0430\u0445 \u0434\u043b\u044f ARM64.<\/p>\n<p>\u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u0430 \u0432\u0437\u0430\u0438\u043c\u043d\u0443\u044e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443. \u0421\u0431\u043e\u0440\u043e\u0447\u043d\u044b\u0439 \u0430\u0433\u0435\u043d\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f, \u0437\u0430\u0432\u0438\u0441\u0430\u043b \u043d\u0430 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0438\u0441\u0442\u0435\u043a\u0430\u043b\u043e. \u0412 \u043b\u043e\u0433\u0430\u0445 \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u043e\u0441\u044c \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0435\u0441\u0442 \u043a\u0440\u0443\u0442\u0438\u043b\u0441\u044f \u0432\u043f\u0443\u0441\u0442\u0443\u044e. \u0417\u0430\u0442\u0435\u043c, \u0441\u043f\u0443\u0441\u0442\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u043e\u0432, \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0430\u0437\u043e\u043c \u0438 \u0432\u044b\u0434\u0430\u0432\u0430\u043b\u043e \u043e\u0448\u0438\u0431\u043a\u0443 \u00ab\u0432\u0440\u0435\u043c\u044f \u0438\u0441\u0442\u0435\u043a\u043b\u043e\u00bb.<\/p>\n<p>\u0412\u043e\u0442 \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b \u0432\u044b\u0432\u043e\u0434 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438:<\/p>\n<pre><code>Current runner version: '2.321.0' Runner name: '&lt;instance-id&gt;' Runner group name: 'Default'  (... 6 hrs of logs ...)  still running: test_immediate_connection_drop_streaming (pid=451) for 19874.78s  still running: test_immediate_connection_drop_streaming (pid=451) for 19875.78s  still running: test_immediate_connection_drop_streaming (pid=451) for 19876.78s  still running: test_immediate_connection_drop_streaming (pid=451) for 19877.78s  Shutting down test cluster...<\/code><\/pre>\n<p>\u0422\u0443\u0442 \u043c\u0430\u043b\u043e \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442. \u0421\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u0438\u0437-\u0437\u0430 \u0432\u0437\u0430\u0438\u043c\u043d\u043e\u0439 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0441 \u043d\u0430\u0448\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u041d\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043c\u044b \u043e\u0448\u0438\u0431\u0430\u043b\u0438\u0441\u044c. <\/p>\n<h2>\u041d\u0430\u0448\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/h2>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 ARM64? \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043d\u0435 \u043c\u043e\u0433\u043b\u0438 \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f. \u0421\u0440\u0435\u0434\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043c\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043b\u0438, \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u043f\u0430\u043c\u044f\u0442\u0438, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u043c\u0438 \u0432 Intel \u0438 ARM64. \u0412 Intel \u043f\u0440\u0438\u043d\u044f\u0442\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0442\u0440\u043e\u0433\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0430\u043c\u044f\u0442\u0438. \u041f\u0440\u0438\u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b, \u043f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u044f\u0445 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0449\u0438\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445 Intel (<a href=\"https:\/\/www.msully.net\/blog\/2015\/02\/25\/the-x86-memory-model\/\" rel=\"noopener noreferrer nofollow\">[1]<\/a>,\u00a0<a href=\"https:\/\/research.swtch.com\/hwmm\" rel=\"noopener noreferrer nofollow\">[2]<\/a>,\u00a0<a href=\"https:\/\/www.cl.cam.ac.uk\/~pes20\/weakmemory\/x86tso-paper.tphols.pdf\" rel=\"noopener noreferrer nofollow\">[3]<\/a>). \u0412 ARM \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0435\u043d\u0435\u0435 \u0441\u0442\u0440\u043e\u0433\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0430\u043c\u044f\u0442\u0438\u00a0<a href=\"https:\/\/dl.acm.org\/doi\/10.1145\/1353522.1353528\" rel=\"noopener noreferrer nofollow\">[4]<\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 (\u0441\u0440\u0435\u0434\u0438 \u043f\u0440\u043e\u0447\u0435\u0433\u043e) \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432. <\/p>\n<p>\u0421\u0430\u043b\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u043e\u0434\u0443 \u043a\u0432\u0430\u043b\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430 Ph.D.\u00a0<a href=\"https:\/\/www.msully.net\/thesis\/\" rel=\"noopener noreferrer nofollow\">[5]<\/a>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0438 \u043f\u0440\u0438\u0433\u043b\u0430\u0441\u0438\u043b\u0438 \u0435\u0433\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442.<\/p>\n<h2>\u041e\u0442\u043b\u0430\u0434\u043a\u0430 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u0434\u043b\u044f \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438<\/h2>\n<p>\u041d\u0430\u0448\u0438 \u043c\u0430\u0448\u0438\u043d\u044b \u0434\u043b\u044f \u043d\u043e\u0447\u043d\u044b\u0445 \u0441\u0431\u043e\u0440\u043e\u043a \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 Amazon AWS. \u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430 \u043d\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u043d\u0435\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u041f\u0440\u0438\u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u0430\u0433\u0435\u043d\u0442\u0430\u043c github \u0447\u0435\u0440\u0435\u0437 ssh\u00a0<a href=\"https:\/\/github.com\/marketplace\/actions\/ssh-to-github-action-runner\" rel=\"noopener noreferrer nofollow\">[6]<\/a>, \u0445\u043e\u0440\u043e\u0448\u043e \u0431\u044b \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a dmesg \u0438 \u0434\u0440\u0443\u0433\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u043b\u043e\u0433\u0430\u043c.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043c\u044b (\u0421\u0430\u043b\u043b\u0438 \u0438 \u041c\u044d\u0442\u0442) \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a \u0430\u0433\u0435\u043d\u0442\u0443 \u0434\u043b\u044f ARM64 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c.<\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u0437\u0430\u0448\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 SSH \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0443 \u0434\u043b\u044f \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438, \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0432\u0438\u0441\u0448\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u043d\u0435\u043c\u0443:<\/p>\n<pre><code>$ aws ssm start-session --region us-west-2 --target i-&lt;instance-id&gt; $ ps aux | grep \"451\" &lt;no output&gt;<\/code><\/pre>\n<p>O\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u044d\u0442\u043e \u0432\u0435\u0440\u043d\u043e! \u041c\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0431\u043e\u0440\u043a\u0443 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 Docker, \u0430 \u0443 \u043d\u0435\u0433\u043e \u2014 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d \u0434\u043b\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432:<\/p>\n<pre><code>$ sudo docker exec -it &lt;container-id&gt; \/bin\/sh # ps aux | grep \"451\" &lt;no output&gt;<\/code><\/pre>\n<p>\u041f\u043e\u0441\u0442\u043e\u0439\u0442\u0435-\u043a\u0430. \u0417\u0434\u0435\u0441\u044c \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0442\u043e\u0436\u0435 \u043d\u0435\u0442.<\/p>\n<p>\u0417\u043d\u0430\u0447\u0438\u0442, \u044d\u0442\u043e \u0431\u044b\u043b\u0430 \u043d\u0435 \u0432\u0437\u0430\u0438\u043c\u043d\u0430\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u2014 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f.<\/p>\n<p>\u041a\u0430\u043a \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f, \u043d\u0430\u0448 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0430\u0433\u0435\u043d\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0441\u043c\u043e\u0433 \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u041d\u043e \u043b\u0430\u0434\u043d\u043e, \u044d\u0442\u0443 \u043e\u0448\u0438\u0431\u043a\u0443 \u043c\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043c \u043a\u0430\u043a-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u0442\u043e\u043c. \u041c\u043e\u0436\u0435\u043c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u043b\u0438 \u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0434\u0430\u043c\u043f \u043f\u0430\u043c\u044f\u0442\u0438. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 Docker \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d \u0434\u043b\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432, \u0434\u0430\u043c\u043f \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u0430 \u0445\u043e\u0441\u0442 \u0441 Docker. \u041c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0434\u043e\u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u043d\u0435\u0433\u043e \u0438\u0437\u0432\u043d\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <code>journalctl<\/code>:<\/p>\n<pre><code>$ sudo journalctl systemd-coredump: Process 59530 (python3) of user 1000 dumped core.                   Stack trace of thread &lt;tid&gt;:                   ...<\/code><\/pre>\n<p>\u0410\u0433\u0430! \u041d\u0430\u0448\u043b\u0438 \u0435\u0433\u043e. \u041a\u0430\u043a \u0438 \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c, \u0434\u0430\u043c\u043f \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043b\u0435\u0436\u0438\u0442 \u0432 <code>\/var\/lib\/systemd\/coredump\/<\/code>. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0437-\u0437\u0430 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430\u0445 \u0438\u043c\u0451\u043d \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432. \u0412\u043d\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c pid 59530, \u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u2014 1000.<\/p>\n<p>\u041c\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0438 \u0434\u0430\u043c\u043f \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u00a0gdb, \u0436\u0435\u043b\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0436\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430\u043c \u0432\u044b\u0441\u044b\u043f\u0430\u043b\u0441\u044f \u0432\u043e\u0440\u043e\u0445 \u043e\u0448\u0438\u0431\u043e\u043a:<\/p>\n<pre><code>$ gdb (gdb) core-file core.python3.1000.&lt;...&gt;.59530.&lt;...&gt; warning: Can't open file \/lib64\/libnss_files-2.17.so during file-backed mapping note processing warning: Can't open file \/lib64\/librt-2.17.so during file-backed mapping note processing warning: Can't open file \/lib64\/libc-2.17.so during file-backed mapping note processing warning: Can't open file \/lib64\/libm-2.17.so during file-backed mapping note processing warning: Can't open file \/lib64\/libutil-2.17.so during file-backed mapping note processing ... etc ... (gdb) bt #0  0x0000ffff805a3e90 in ?? () #1  0x0000ffff806a7000 in ?? () Backtrace stopped: not enough registers or memory available to unwind further<\/code><\/pre>\n<p>\u041b\u0430\u0434\u043d\u043e. \u042d\u0442\u043e \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u043b\u043e. \u041c\u044b \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0432\u043d\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u0430 \u043d\u0430\u0448\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432\u0435\u0441\u044c\u043c\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043d\u0438\u0445 \u043d\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c <code>gdb<\/code>.<\/p>\n<p>\u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0432\u0441\u0435 \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c\u00a0<code>gdb<\/code>, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u044b\u00a0<code>.so<\/code>:<\/p>\n<pre><code># mkdir \/container # docker cp &lt;instance&gt;:\/lib \/container # docker cp &lt;instance&gt;:\/usr \/container ... etc ... $ gdb (gdb) set solib-absolute-prefix \/container (gdb) file \/container\/edgedb\/bin\/python3 Reading symbols from \/container\/edgedb\/bin\/python3... (No debugging symbols found in \/container\/edgedb\/bin\/python3) (gdb) core-file core.python3.1000.&lt;...&gt;.59530.&lt;...&gt; (gdb) bt #0  0x0000ffff805a3e90 in getenv () from \/container\/lib64\/libc.so.6 #1  0x0000ffff8059c174 in __dcigettext () from \/container\/lib64\/libc.so.6<\/code><\/pre>\n<p>\u0413\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435!<\/p>\n<p>\u041d\u043e \u0432 \u043d\u0430\u0448\u0435\u043c \u043d\u043e\u0432\u043e\u043c HTTP-\u043a\u043e\u0434\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u0432\u044b\u044f\u0432\u0438\u043b\u0430 \u043d\u0435 \u043e\u0442\u043a\u0430\u0437, \u0430 \u043d\u0435\u0447\u0442\u043e \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0435: <\/p>\n<pre><code>(gdb) bt #0  0x0000ffff805a3e90 in getenv () from \/container\/lib64\/libc.so.6 #1  0x0000ffff8059c174 in __dcigettext () from \/container\/lib64\/libc.so.6 #2  0x0000ffff805f263c in strerror_r () from \/container\/lib64\/libc.so.6 #3  0x0000ffff805f254c in strerror () from \/container\/lib64\/libc.so.6 #4  0x00000000005bb76c in PyErr_SetFromErrnoWithFilenameObjects () #5  0x00000000004e4c14 in ?? () #6  0x000000000049f66c in PyObject_VectorcallMethod () #7  0x00000000005d21e4 in ?? () #8  0x00000000005d213c in ?? () #9  0x00000000005d1ed4 in ?? () #10 0x00000000004985ec in _PyObject_MakeTpCall () #11 0x00000000004a7734 in _PyEval_EvalFrameDefault () #12 0x000000000049ccb4 in _PyObject_FastCallDictTstate () #13 0x00000000004ebce8 in ?? () #14 0x00000000004985ec in _PyObject_MakeTpCall () #15 0x00000000004a7734 in _PyEval_EvalFrameDefault () #16 0x00000000005bee10 in ?? () #17 0x0000ffff7ee1f5dc in ?? () from \/container\/...\/_asyncio.cpython-312-aarch64-linux-gnu.so #18 0x0000ffff7ee1fd94 in ?? () from \/container\/...\/_asyncio.cpython-312-aarch64-linux-gnu.so<\/code><\/pre>\n<p>\u041c\u044b \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0443\u044e\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044e\u00a0<code>getenv<\/code>. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u0437\u043d\u0430\u043b\u0438, \u0447\u0442\u043e \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f GLIBC 2.17, \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u044b\u0441\u043a\u0430\u043b\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 <code>getenv<\/code>, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0438\u0442\u044c <a href=\"https:\/\/elixir.bootlin.com\/glibc\/glibc-2.17.90\/source\/stdlib\/getenv.c#L33\" rel=\"noopener noreferrer nofollow\">[7]<\/a>:<\/p>\n<pre><code class=\"cpp\">\/* ... \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043f\u0435\u0440\u0435\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0434\u043b\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0442\u0438 ... *\/ char * getenv (const char *name) {   size_t len = strlen (name);   char **ep;   uint16_t name_start;    if (__environ == NULL || name[0] == '\\0')     return NULL;    if (name[1] == '\\0') {     \/* \u0418\u043c\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432\u0441\u0435\u0433\u043e \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u0435\u0440\u0432\u044b\u0435 \u0434\u0432\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0432 \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u2014 \u044d\u0442\u043e\u0442 \u0441\u0438\u043c\u0432\u043e\u043b \u0438 \u0441\u0438\u043c\u0432\u043e\u043b '='.  *\/     name_start = ('=' &lt;&lt; 8) | *(const unsigned char *) name;     for (ep = __environ; *ep != NULL; ++ep) {         uint16_t ep_start = (((unsigned char *) *ep)[0]                            | (((unsigned char *) *ep)[1] &lt;&lt; 8));       if (name_start == ep_start)         return &amp;(*ep)[2];     }   } else {     name_start = (((const unsigned char *) name)[0]       | (((const unsigned char *) name)[1] &lt;&lt; 8));     len -= 2;     name += 2;      for (ep = __environ; *ep != NULL; ++ep) {       uint16_t ep_start = (((unsigned char *) *ep)[0]                            | (((unsigned char *) *ep)[1] &lt;&lt; 8));       if (name_start == ep_start &amp;&amp; !strncmp (*ep + 2, name, len)           &amp;&amp; (*ep)[len + 2] == '=')         return &amp;(*ep)[len + 3];     }   }    return NULL; }<\/code><\/pre>\n<pre><code> (gdb) disassemble getenv Dump of assembler code for function getenv:     0x0000ffff805a3de4 &lt;+0&gt;:     stp     x29, x30, [sp, #-64]!     0x0000ffff805a3de8 &lt;+4&gt;:     mov     x29, sp     0x0000ffff805a3dec &lt;+8&gt;:     stp     x19, x20, [sp, #16]     0x0000ffff805a3df0 &lt;+12&gt;:    stp     x21, x22, [sp, #32]     0x0000ffff805a3df4 &lt;+16&gt;:    stp     x23, x24, [sp, #48]     0x0000ffff805a3df8 &lt;+20&gt;:    mov     x22, x0     0x0000ffff805a3dfc &lt;+24&gt;:    bl      0xffff805f2784 &lt;strlen&gt;     0x0000ffff805a3e00 &lt;+28&gt;:    mov     x24, x0     0x0000ffff805a3e04 &lt;+32&gt;:    adrp    x0, 0xffff806eb000     0x0000ffff805a3e08 &lt;+36&gt;:    ldr     x0, [x0, #3704]     0x0000ffff805a3e0c &lt;+40&gt;:    ldr     x20, [x0]     0x0000ffff805a3e10 &lt;+44&gt;:    cbz     x20, 0xffff805a3ed8 &lt;getenv+244&gt;     0x0000ffff805a3e14 &lt;+48&gt;:    ldrb    w1, [x22]     0x0000ffff805a3e18 &lt;+52&gt;:    cbz     w1, 0xffff805a3ed0 &lt;getenv+236&gt;     0x0000ffff805a3e1c &lt;+56&gt;:    ldrb    w21, [x22, #1]     0x0000ffff805a3e20 &lt;+60&gt;:    ldr     x19, [x20]     0x0000ffff805a3e24 &lt;+64&gt;:    cbnz    w21, 0xffff805a3e70 &lt;getenv+140&gt;     0x0000ffff805a3e28 &lt;+68&gt;:    mov     w21, #0x3d00                    \/\/ #15616     0x0000ffff805a3e2c &lt;+72&gt;:    orr     w21, w1, w21     0x0000ffff805a3e30 &lt;+76&gt;:    cbnz    x19, 0xffff805a3e40 &lt;getenv+92&gt;     0x0000ffff805a3e34 &lt;+80&gt;:    b       0xffff805a3e58 &lt;getenv+116&gt;     0x0000ffff805a3e38 &lt;+84&gt;:    ldr     x19, [x20, #8]!     0x0000ffff805a3e3c &lt;+88&gt;:    cbz     x19, 0xffff805a3e58 &lt;getenv+116&gt;     0x0000ffff805a3e40 &lt;+92&gt;:    ldrb    w1, [x19, #1]     0x0000ffff805a3e44 &lt;+96&gt;:    ldrb    w0, [x19]     0x0000ffff805a3e48 &lt;+100&gt;:   orr     w0, w0, w1, lsl #8     0x0000ffff805a3e4c &lt;+104&gt;:   cmp     w21, w0     0x0000ffff805a3e50 &lt;+108&gt;:   b.ne    0xffff805a3e38 &lt;getenv+84&gt;  \/\/ b.any     0x0000ffff805a3e54 &lt;+112&gt;:   add     x19, x19, #0x2     0x0000ffff805a3e58 &lt;+116&gt;:   mov     x0, x19     0x0000ffff805a3e5c &lt;+120&gt;:   ldp     x21, x22, [sp, #32]     0x0000ffff805a3e60 &lt;+124&gt;:   ldp     x19, x20, [sp, #16]     0x0000ffff805a3e64 &lt;+128&gt;:   ldp     x23, x24, [sp, #48]     0x0000ffff805a3e68 &lt;+132&gt;:   ldp     x29, x30, [sp], #64     0x0000ffff805a3e6c &lt;+136&gt;:   ret     0x0000ffff805a3e70 &lt;+140&gt;:   orr     w21, w1, w21, lsl #8     0x0000ffff805a3e74 &lt;+144&gt;:   sxth    w21, w21     0x0000ffff805a3e78 &lt;+148&gt;:   sub     x23, x24, #0x2     0x0000ffff805a3e7c &lt;+152&gt;:   add     x22, x22, #0x2     0x0000ffff805a3e80 &lt;+156&gt;:   cbnz    x19, 0xffff805a3e90 &lt;getenv+172&gt;     0x0000ffff805a3e84 &lt;+160&gt;:   b       0xffff805a3e58 &lt;getenv+116&gt;     0x0000ffff805a3e88 &lt;+164&gt;:   ldr     x19, [x20, #8]!     0x0000ffff805a3e8c &lt;+168&gt;:   cbz     x19, 0xffff805a3e58 &lt;getenv+116&gt;  =&gt; 0x0000ffff805a3e90 &lt;+172&gt;:   ldrb    w4, [x19, #1]     0x0000ffff805a3e94 &lt;+176&gt;:   ldrb    w3, [x19]     0x0000ffff805a3e98 &lt;+180&gt;:   orr     w3, w3, w4, lsl #8     0x0000ffff805a3e9c &lt;+184&gt;:   cmp     w21, w3, sxth     0x0000ffff805a3ea0 &lt;+188&gt;:   b.ne    0xffff805a3e88 &lt;getenv+164&gt;  \/\/ b.any     0x0000ffff805a3ea4 &lt;+192&gt;:   add     x0, x19, #0x2     0x0000ffff805a3ea8 &lt;+196&gt;:   mov     x1, x22     0x0000ffff805a3eac &lt;+200&gt;:   mov     x2, x23     0x0000ffff805a3eb0 &lt;+204&gt;:   bl      0xffff805f2a44 &lt;strncmp&gt;     0x0000ffff805a3eb4 &lt;+208&gt;:   cbnz    w0, 0xffff805a3e88 &lt;getenv+164&gt;     0x0000ffff805a3eb8 &lt;+212&gt;:   ldrb    w0, [x19, x24]     0x0000ffff805a3ebc &lt;+216&gt;:   cmp     w0, #0x3d     0x0000ffff805a3ec0 &lt;+220&gt;:   b.ne    0xffff805a3e88 &lt;getenv+164&gt;  \/\/ b.any     0x0000ffff805a3ec4 &lt;+224&gt;:   add     x24, x24, #0x1     0x0000ffff805a3ec8 &lt;+228&gt;:   add     x19, x19, x24     0x0000ffff805a3ecc &lt;+232&gt;:   b       0xffff805a3e58 &lt;getenv+116&gt;     0x0000ffff805a3ed0 &lt;+236&gt;:   mov     x19, #0x0                       \/\/ #0     0x0000ffff805a3ed4 &lt;+240&gt;:   b       0xffff805a3e58 &lt;getenv+116&gt;     0x0000ffff805a3ed8 &lt;+244&gt;:   mov     x19, x20     0x0000ffff805a3edc &lt;+248&gt;:   b       0xffff805a3e58 &lt;getenv+116&gt;     0x0000ffff805a3eb8 &lt;+212&gt;:   ldrb    w0, [x19, x24]     0x0000ffff805a3ebc &lt;+216&gt;:   cmp     w0, #0x3d     0x0000ffff805a3ec0 &lt;+220&gt;:   b.ne    0xffff805a3e88 &lt;getenv+164&gt;  \/\/ b.any     0x0000ffff805a3ec4 &lt;+224&gt;:   add     x24, x24, #0x1     0x0000ffff805a3ec8 &lt;+228&gt;:   add     x19, x19, x24     0x0000ffff805a3ecc &lt;+232&gt;:   b       0xffff805a3e58 &lt;getenv+116&gt;     0x0000ffff805a3ed0 &lt;+236&gt;:   mov     x19, #0x0                       \/\/ #0     0x0000ffff805a3ed4 &lt;+240&gt;:   b       0xffff805a3e58 &lt;getenv+116&gt;     0x0000ffff805a3ed8 &lt;+244&gt;:   mov     x19, x20     0x0000ffff805a3edc &lt;+248&gt;:   b       0xffff805a3e58 &lt;getenv+116&gt;  End of assembler dump.<\/code><\/pre>\n<p>\u0423\u0444, \u0437\u043d\u0430\u0447\u0438\u0442, \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u0430\u0439\u0442\u0430 \u0438 \u0432 \u0445\u043e\u0434\u0435 \u043f\u043e\u0438\u0441\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0435\u0439 \u043d\u0430\u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0434\u0430\u043c\u043f \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432:<\/p>\n<pre><code> (gdb) info reg ... x19            0x220               544 x20            0x248b5000          613109760 ... sp             0xffffddd93c80      0xffffddd93c80 pc             0xffff805a3e90      0xffff805a3e90<\/code><\/pre>\n<p>\u0418\u0442\u0430\u043a,\u00a0<code>getenv<\/code>\u00a0\u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0430, \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u043e\u043d\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 (0x220\u00a0\u2013 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0442\u0430\u043a\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u044b\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442). \u041d\u043e \u043a\u0430\u043a?<\/p>\n<h2>\u0427\u0442\u043e \u0436\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u043e?<\/h2>\n<p>\u041f\u043e\u043d\u0430\u0447\u0430\u043b\u0443 \u043d\u0430\u0441 \u044d\u0442\u043e \u043e\u0437\u0430\u0434\u0430\u0447\u0438\u043b\u043e. \u041e\u0442\u043a\u0430\u0437 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0432 <code>libc<\/code>. \u041c\u044b \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u043b\u0438, \u0434\u0435\u043b\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u0430 \u2014 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b \u0432\u044b\u0437\u043e\u0432 getenv, \u043d\u043e \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u043c \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041c\u044b \u043f\u0440\u0438\u043d\u044f\u043b\u0438\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0431\u043b\u043e\u043a \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438\u00a0<code>gdb<\/code>.<\/p>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u044e: \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c POSIX <a href=\"https:\/\/www.man7.org\/linux\/man-pages\/man7\/environ.7.html\" rel=\"noopener noreferrer nofollow\">[8]<\/a>\u00a0<code>environ<\/code>\u00a0\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a <code>char **<\/code>\u00a0\u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0430 \u043a\u043e\u043d\u0435\u0446 \u0441\u043f\u0438\u0441\u043a\u0430 \u043e\u0442\u043c\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a <code>NULL<\/code>-\u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c.<\/p>\n<pre><code> (gdb) x\/s ((char**) environ)[0] 0xffffddd95e6a: \"GITHUB_STATE=\/github\/file_commands\/save_state_0e5b7bd6-...\" ... (gdb) x\/s ((char**) environ)[66] 0xffff6401f0b0: \"SSL_CERT_FILE=\/etc\/ssl\/certs\/ca-certificates.crt\" (gdb) x\/s ((char**) environ)[67] 0xffff6401f8d0: \"SSL_CERT_DIR=\/etc\/ssl\/certs\" (gdb) x\/s ((char**) environ)[68] 0x0:    &lt;error: Cannot access memory at address 0x0&gt; &lt;etc&gt;<\/code><\/pre>\n<p>\u041d\u043e \u0432\u0435\u0434\u044c \u044d\u0442\u043e \u043d\u043e\u043d\u0441\u0435\u043d\u0441 \u2014 \u043c\u044b \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c \u0440\u0435\u0448\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0438\u0437 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043f\u0430\u043c\u044f\u0442\u0438, \u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u0442\u0430\u043a, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u044d\u0442\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0432\u0430\u043b\u0438\u0434\u043d\u0430 \u0438 \u043d\u0435\u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0432\u0430. \u041a\u0441\u0442\u0430\u0442\u0438, \u0430 \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0437\u0434\u0435\u0441\u044c <code>getenv<\/code>?<\/p>\n<p>\u0410 \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u043b \u042e\u0440\u0438\u0439 \u0438 \u0441\u043a\u0438\u043d\u0443\u043b \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043e\u0434\u0438\u043d \u0441\u0442\u0430\u0440\u044b\u0439 \u043f\u043e\u0441\u0442: <\/p>\n<blockquote>\n<p>&lt;yury&gt; \u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0435\u0441\u044f \u043a \u0432\u0432\u043e\u0434\u0443\/\u0432\u044b\u0432\u043e\u0434\u0443, \u0432\u044b\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0448\u0438\u0431\u043a\u0438, \u0430  Python \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <code>PyErr_SetFromErrnoWithFilenameObjects<\/code> \u0441\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437 <code>errno<\/code> \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <\/p>\n<p>\u00a0<\/p>\n<p>&lt;yury&gt; \u041f\u043e-\u0432\u0438\u0434\u0438\u043c\u043e\u043c\u0443, \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0442\u043c\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430 <code>gettext<\/code> (\u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0434\u043b\u044f \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438?)<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u0418 \u0434\u0430\u043b\u044c\u0448\u0435 \u0438\u0434\u0451\u0442 \u0432 <code>getenv<\/code><\/p>\n<p>\u00a0<\/p>\n<p>&lt;yury&gt; \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 <code>getenv<\/code> \u043d\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0430<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 https:\/\/rachelbythebay.com\/w\/2017\/01\/30\/env\/<\/p>\n<\/blockquote>\n<h2>\u0412\u043e\u0442 \u0433\u0434\u0435 \u0441\u043e\u0431\u0430\u043a\u0430 \u0437\u0430\u0440\u044b\u0442\u0430: setenv \u0438 getenv<\/h2>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044e setenv\u00a0\u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0432 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u0417\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u044d\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u0438 \u0434\u0430\u043d\u043d\u044b\u0439 \u0444\u0435\u043d\u043e\u043c\u0435\u043d \u0442\u043e \u0438 \u0434\u0435\u043b\u043e \u043f\u0435\u0440\u0435\u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0448 \u0431\u0440\u0430\u0442-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u0442\u0430\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u043e\u0442\u043a\u0430\u0437\u0430\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0<code>getenv<\/code>\u00a0\u0438\u0437 <code>libc<\/code> <a href=\"https:\/\/www.evanjones.ca\/setenv-is-not-thread-safe.html\" rel=\"noopener noreferrer nofollow\">[9]<\/a>,\u00a0<a href=\"https:\/\/rachelbythebay.com\/w\/2017\/01\/30\/env\/\" rel=\"noopener noreferrer nofollow\">[10]<\/a>,\u00a0<a href=\"https:\/\/github.com\/golang\/go\/issues\/63567\" rel=\"noopener noreferrer nofollow\">[11]<\/a>,\u00a0<a href=\"https:\/\/blogs.gnome.org\/mcatanzaro\/2018\/02\/28\/on-setenv-and-explosions\/\" rel=\"noopener noreferrer nofollow\">[12]<\/a>.<\/p>\n<p>\u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u043c, \u0447\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u044d\u0442\u043e\u043c, \u043d\u043e, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u044f\u0432\u043d\u0443\u044e \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043c\u044b \u043d\u0435 \u043c\u043e\u0433\u043b\u0438 \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u043e\u0432 \u0432\u043a\u043b\u0430\u0434 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043d\u0430\u043c\u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0432 \u044d\u0442\u043e\u0442 \u043e\u0442\u043a\u0430\u0437.<\/p>\n<p>\u041f\u043e\u0447\u0438\u0442\u0430\u0432 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438 \u0441\u043e\u043e\u0442\u043d\u0435\u0441\u044f \u0435\u0433\u043e \u0441 \u043a\u043e\u0434\u043e\u043c \u043d\u0430 C, \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438, \u0447\u0442\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u00a0<code>x20<\/code>\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439\u00a0<code>ep<\/code>. \u042d\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u043e\u0431\u0445\u043e\u0434\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <code>environ<\/code>. \u041d\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u00a0<code>x20<\/code>\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442\u00a00x248b5000, \u0430\u00a0<code>environ<\/code>\u00a0\u2014\u00a00x28655750, \u043f\u043e\u0447\u0442\u0438 \u043d\u0430 60 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442 \u043f\u043e\u0437\u0436\u0435 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443\u00a0<code>x20<\/code>\u00a0\u2014 \u044d\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0441\u044c \u043b\u0438 \u0442\u0430\u043c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043a\u0440\u0443\u043f\u0438\u0446\u044b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0435\u0439 \u043d\u0430\u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u2014 \u0430 \u043f\u043e\u0442\u043e\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0435\u0451 \u0441 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c <code>environ<\/code>.<\/p>\n<pre><code> (gdb) x\/100g (char**)environ 0x28655750:     0x0000ffffddd95e6a      0x0000ffffddd95ebd ... 0x28655930:     0x0000ffffddd96f34      0x0000ffffddd96f6e 0x28655940:     0x0000ffffddd96fa5      0x0000ffffddd96fc3 0x28655950:     0x0000000024c1f710      0x0000000025213a70 0x28655960:     0x0000ffff6401f0b0      0x0000ffff6401f8d0 0x28655970:     0x0000000000000000      0x0000000000003401 (gdb) x\/20g $x20-40 0x248b4fd8:     0x0000ffffddd96f6e      0x0000ffffddd96fa5 0x248b4fe8:     0x0000ffffddd96fc3      0x0000000024c1f710 0x248b4ff8:     0x0000000025213a70      0x0000000000000220 0x248b5008:     0x0000000000000020      0x0000ffff7f5192a8 0x248b5018:     0x0000000000000000      0x000000000a000150 0x248b5028:     0x0000000000000031      0x0000ffff7f5192b8 0x248b5038:     0x0000000000000000      0x000000000a0001c6 0x248b5048:     0x000000000094af78      0x0000000000000030 0x248b5058:     0x0000000000000041      0x0000000000000000 0x248b5068:     0x0000000000000000      0x0000000000000000<\/code><\/pre>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e! \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u0434\u0432\u0443\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u0445 \u043f\u0430\u043c\u044f\u0442\u0438 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0438! \u0410 \u0433\u0434\u0435 \u043e\u043d\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f? \u042d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0430\u043c\u00a0<code>0x0000ffff6401f0b0<\/code>\u00a0\u0438\u00a0<code>0x0000ffff6401f8d0<\/code>: \u043e\u043d\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 <code>SSL_CERT_FILE=...<\/code>\u00a0\u0438\u00a0<code>SSL_CERT_DIR=...<\/code>!<\/p>\n<p>\u0412\u0441\u0451 \u044d\u0442\u043e \u044f\u0432\u043d\u043e \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u044b \u0432\u0435\u0440\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430\u0441\u0447\u0451\u0442 \u0433\u043e\u043d\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0442\u043e\u043a \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u043b environ\u00a0\u0432 \u0440\u0430\u043c\u043a\u0430\u0445\u00a0<code>setenv<\/code>! \u041f\u0440\u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0438\u00a0<code>setenv<\/code> \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0431\u043b\u043e\u043a \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u043a\u043b\u044e\u0447\u0451\u043d \u0432 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0442\u0435\u0441\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0438\u043c\u0435\u043b\u0430 \u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0443\u043c\u0435\u0441\u0442\u0438\u043b\u0438\u0441\u044c \u043d\u043e\u0432\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 <a href=\"https:\/\/elixir.bootlin.com\/glibc\/glibc-2.17.90\/source\/stdlib\/setenv.c#L33\" rel=\"noopener noreferrer nofollow\">[13]<\/a>.<\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u044b \u0432\u0441\u0451 \u0435\u0449\u0451 \u043d\u0435 \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438, \u043a\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 setenv. \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c, \u0447\u0442\u043e \u043e\u0431\u0432\u0430\u043b \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0437-\u0437\u0430 OpenSSL \u0438\/\u0438\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438\u00a0<code>reqwest<\/code>, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0435\u0439\u0441\u044f \u043a TLS (<code>rust-native-tls<\/code>), \u043d\u043e \u043a\u0430\u043a?<\/p>\n<h2>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a openssl_probe<\/h2>\n<p>\u041f\u043e\u0433\u0443\u0433\u043b\u0438\u0432 \u044d\u0442\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 \u0441\u0432\u044f\u0437\u043a\u0435 \u0441\u00a0<code>rust-native-tls<\/code>, \u043c\u044b \u0432\u044b\u0443\u0434\u0438\u043b\u0438 \u0441\u0442\u0430\u0440\u0438\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443:\u00a0<a href=\"https:\/\/github.com\/sfackler\/rust-native-tls\/issues\/154\" rel=\"noopener noreferrer nofollow\">[14]<\/a>. \u0410 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u0441\u043a\u0440\u044b\u0432\u0430\u043b\u043e\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435: <\/p>\n<blockquote>\n<p>\u041d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d \u043d\u0430\u0441\u0447\u0451\u0442 <code>openssl<\/code>. \u0421\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u043d  \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 openssl-probe, \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f <code>SSL_CERT_FILE<\/code> \u0438 <code>SSL_CERT_DIR<\/code>, \u0430 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432 \u0434\u0435\u043b\u043e \u0432\u0441\u0442\u0443\u043f\u0430\u0435\u0442 <code>SslConnector::builder<\/code>, \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 <code>ctx.set_default_verify_paths<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u0437\u0430\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0435\u0442 \u0432 \u044d\u0442\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0438 \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0443\u043c\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043e\u0447\u0438\u0449\u0430\u0442\u044c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435,  \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u0430. \u041f\u043e-\u0432\u0438\u0434\u0438\u043c\u043e\u043c\u0443, \u0443 \u043c\u0435\u043d\u044f \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u044d\u0442\u043e \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u043e.<\/p>\n<\/blockquote>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e. \u0418\u0442\u0430\u043a,\u00a0<code>openssl-probe<\/code>\u00a0\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u044d\u0442\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435. \u041f\u0440\u0438\u0447\u0451\u043c, \u0441\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439, \u043f\u043e\u0434 Linux \u043c\u044b \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c\u00a0<code>rust-native-tls\u00a0openssl<\/code>, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0438\u0434\u0443\u0442 \u0432\u044b\u0437\u043e\u0432\u044b \u0432 \u044d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438!<\/p>\n<p>\u0412\u043e\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0431\u0435\u0437\u043e\u0431\u0438\u0434\u043d\u044b\u0435 \u043d\u0430 \u0432\u0438\u0434 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438\u00a0<code>openssl-probe<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 <code>unsafe<\/code>\u00a0<a href=\"https:\/\/github.com\/alexcrichton\/openssl-probe\/blob\/db67c9e5b333b1b4164467b17f5d99207fad004c\/src\/lib.rs#L65-L76\" rel=\"noopener noreferrer nofollow\">[15]<\/a>:<\/p>\n<pre><code class=\"cpp\">pub fn try_init_ssl_cert_env_vars() -&gt; bool {     let ProbeResult { cert_file, cert_dir } = probe();     \/\/ \u043c\u044b \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0437\u0430\u0442\u0438\u0440\u0430\u0442\u044c \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f,     \/\/ \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0435, \u0442\u043e probe() \u0432\u0435\u0440\u043d\u0451\u0442 \u0438\u0445      \/\/ \u0432 \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435     if let Some(path) = &amp;cert_file {         env::set_var(ENV_CERT_FILE, path);     }     if let Some(path) = &amp;cert_dir {         env::set_var(ENV_CERT_DIR, path);     }      cert_file.is_some() || cert_dir.is_some()  }<\/code><\/pre>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a \u043c\u044b \u0438 \u043d\u0430\u0440\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435. \u041e\u043d\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u043e \u0438\u0437-\u0437\u0430 \u043a\u043e\u0434\u0430 \u043d\u0430 Rust, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 <code>unsafe<\/code>, \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0430\u0442\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 <code>libc<\/code>\u00a0\u0433\u0434\u0435-\u0442\u043e \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<h2>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f: \u0447\u0442\u043e \u0436\u0435 \u0442\u0430\u043a\u043e\u0435 RISC?<\/h2>\n<p>\u041f\u0440\u0438\u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u0431\u0430 \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u043e\u043f\u044b\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u041c\u044d\u0442\u0442 \u0431\u044b\u043b \u0440\u0430\u0441\u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u0430\u043d \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 aarch64, a \u0421\u0430\u043b\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0443\u043c\u0435\u043b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u043f\u043e\u0442\u0443\u043f\u0438\u043b\u0438, \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044f \u043e\u0434\u0438\u043d \u0438\u0437 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u0446\u0438\u043a\u043b\u043e\u0432 \u0432 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435. \u041f\u043e-\u0432\u0438\u0434\u0438\u043c\u043e\u043c\u0443, \u0432 \u043a\u043e\u0434\u0435 \u0431\u044b\u043b \u0440\u0430\u0441\u0447\u0451\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00a0<code>x20<\/code>\u00a0\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f, \u0438 \u044d\u0442\u043e\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u044f\u0432\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0441\u0438\u043b\u0441\u044f \u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 ep, \u043d\u043e \u043e\u043d, \u043f\u043e-\u0432\u0438\u0434\u0438\u043c\u043e\u043c\u0443, \u043d\u0435 \u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u0432 \u043b\u0435\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439.<\/p>\n<p>\u0418 \u0442\u0443\u0442 \u043c\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u0432\u043e\u0441\u043a\u043b\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u043d\u0430\u043a:<\/p>\n<pre><code class=\"cmake\">0x0000ffff805a3e88 &lt;+164&gt;:   ldr     x19, [x20, #8]!<\/code><\/pre>\n<p>\u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u044d\u0442\u043e \u00ab\u043f\u0440\u0435-\u0438\u043d\u0434\u0435\u043a\u0441\u043d\u044b\u0439\u00bb \u0440\u0435\u0436\u0438\u043c \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438, \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443\u00a0<code>x19 = *(x20 + 8); x20 = x20 + 8<\/code>\u00a0<a href=\"https:\/\/developer.arm.com\/documentation\/102374\/0102\/Loads-and-stores---addressing\" rel=\"noopener noreferrer nofollow\">[16]<\/a>.<\/p>\n<p>\u0422\u0430\u043a\u043e\u0439 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043c\u0438\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u043d\u043e \u043c\u044b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0432\u0438\u0434\u0430\u043b\u0438 \u0438 \u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u043d\u0430\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438: \u0440\u0435\u0436\u0438\u043c\u044b \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438 \u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u043e\u043c \u2014 \u044d\u0442\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u0438\u0435 \u0441\u0442\u0430\u0440\u0438\u043d\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d CISC, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a VAX. \u0411\u0435\u0437 \u043d\u0438\u0445 \u043e\u0431\u0445\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0434\u0430\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u0438\u0437 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 CISC, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, x86, \u0438 \u0443\u0436 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u044b\u0435 \u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b RISC. \u041f\u043e\u043b\u0430\u0433\u0430\u044e, \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0451 \u043d\u043e\u0432\u043e\u0435 \u2014 \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u0430\u0431\u044b\u0442\u043e\u0435 \u0441\u0442\u0430\u0440\u043e\u0435. <\/p>\n<p>(\u0410\u043f\u0434\u0435\u0439\u0442: \u043d\u0443, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043d\u0435 \u0442\u0430\u043a\u043e\u0435 \u0443\u0436 \u043d\u043e\u0432\u043e\u0435. \u0412 ARM \u044d\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430, RISC, \u0434\u0443\u043c\u0430\u044e, \u043e\u043f\u043e\u0437\u0434\u0430\u043b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 \u043d\u0435\u0434\u0435\u043b\u044e).<\/p>\n<h2>\u0422\u0430\u043a \u043f\u043e\u0447\u0435\u043c\u0443 \u0436\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 ARM64 \u0438 \u043d\u0430 Linux?<\/h2>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0434\u0430\u043d\u043d\u0430\u044f \u0430\u0432\u0430\u0440\u0438\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0438\u0437-\u0437\u0430 <code>realloc<\/code>, \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u044e\u0449\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u044c, \u0430 \u0441\u0430\u043c\u0430 \u044d\u0442\u0430 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0432\u043e\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f <code>setenv<\/code>, \u0438 \u0432\u0441\u0451 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0442\u043e\u043a \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 getenv. \u042d\u0442\u043e\u0442 \u043f\u0430\u0437\u043b \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043a\u0443\u0441\u043e\u0447\u043a\u043e\u0432. \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0440\u043e\u0432\u043d\u043e \u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u044f. \u041e\u0442\u043a\u0430\u0437 \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434\u0430 \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u043d\u043e \u043e\u043d \u043f\u043e\u0434\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f <code>asyncio<\/code>, \u0438 \u0437\u0434\u0435\u0441\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u0437\u0432\u0430\u0442\u044c\u00a0getenv, \u043a\u043e\u0442\u043e\u0440\u0430\u044f, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0438\u0437\u0432\u043b\u0435\u0447\u0451\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f\u00a0LANGUAGE\u00a0\u0432 \u0441\u0430\u043c\u044b\u0439 \u043d\u0435\u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442.<\/p>\n<p>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00a00x220\u00a0\u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u043d\u044b\u0439 \u0432 64-\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u044b\u0445 \u0441\u043b\u043e\u0432\u0430\u0445\u00a0(0x220 \/ 8 = 68), \u0438 \u044d\u0442\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0437\u0430\u0442\u0438\u0440\u0430\u043b\u0441\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0438\u0439 <code>NULL<\/code>\u00a0\u0431\u043b\u043e\u043a\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0435\u0449\u0451 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u043d \u0431\u044b\u043b \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0451\u043d. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 malloc \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430. \u041d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043a\u0430\u043a \u0440\u0430\u0437 \u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043e\u043f\u0430\u0441\u043d\u044b\u043c \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c, \u0438 \u043d\u0430 \u043d\u0451\u043c \u043f\u043e\u0434\u0440\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0436\u0435\u0440\u0442\u0432\u044b, \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u0432\u0448\u0438\u0435 \u043d\u0430 \u0441\u0435\u0431\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u0435\u0434\u0443\u0441\u043b\u043e\u0432\u0438\u044f, \u043d\u0430\u043c \u0435\u0449\u0451 \u043f\u043e\u0432\u0435\u0437\u043b\u043e, \u0447\u0442\u043e \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0439 \u043e\u0442\u043a\u0430\u0437 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u0437\u044f\u0442\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435.<\/p>\n<h2>\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u0442\u044c \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 <code>rust-native-tls\/openssl<\/code>\u00a0\u043e\u0442\u00a0<code>reqwest<\/code>\u00a0 \u043d\u0430 <code>rustls<\/code>\u00a0\u043f\u043e\u0434 Linux. \u0418\u0441\u0445\u043e\u0434\u043d\u043e \u043c\u044b \u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0438, \u0447\u0442\u043e, \u043f\u043e\u043b\u044c\u0437\u0443\u044f\u0441\u044c \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c TLS-\u0431\u0435\u043a\u044d\u043d\u0434\u043e\u043c, \u043c\u044b \u043e\u0431\u043e\u0439\u0434\u0451\u043c\u0441\u044f \u0431\u0435\u0437 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u0432\u0443\u0445 TLS-\u0434\u0432\u0438\u0436\u043a\u043e\u0432 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0441 Python \u043d\u0430 Rust. \u0421\u0442\u043e\u043b\u043a\u043d\u0443\u0432\u0448\u0438\u0441\u044c \u0441 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439, \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u0432 \u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0440\u043e\u0447\u043d\u043e\u0439 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0441 \u0434\u0432\u0443\u043c\u044f \u0434\u0432\u0438\u0436\u043a\u0430\u043c\u0438 \u0432\u043f\u043e\u043b\u043d\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e.<\/p>\n<p>\u0411\u044b\u043b \u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442: \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c <code>try_init_ssl_cert_env_vars<\/code>, \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044f \u0432 Python \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 (\u0442\u0430 \u0441\u0430\u043c\u0430\u044f GIL, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0441 \u043f\u0443\u0433\u0430\u043b\u0438). \u0412 Rust \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430, \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0430\u044f \u0433\u043e\u043d\u043a\u0438 \u043c\u0435\u0436\u0434\u0443 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043a\u043e\u0434\u0430 Rust, \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0447\u0438\u0442\u0430\u044e\u0449\u0438\u043c\u0438 \u0438 \u043f\u0438\u0448\u0443\u0449\u0438\u043c\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435. \u041d\u043e \u044d\u0442\u0430 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u043a\u043e\u0434\u0443 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u00a0<code>libc<\/code>. \u0423\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044f GIL, \u043c\u044b, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0441\u0442\u0440\u0430\u0445\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043e\u0442 \u0433\u043e\u043d\u043a\u0438 \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 Python-\u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438. <\/p>\n<p>\u0412 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 Rust \u044d\u0442\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0443\u0436\u0435 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u0438 \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 2024 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0449\u0438\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 <a href=\"https:\/\/github.com\/rust-lang\/rust\/issues\/124866\" rel=\"noopener noreferrer nofollow\">[17]<\/a>. \u0412 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 <code>glibc<\/code> \u0442\u0430\u043a\u0436\u0435 (\u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e) \u0443\u0441\u0438\u043b\u0438\u043b\u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0432 <code>getenv<\/code>, \u0438\u0437\u0431\u0435\u0433\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u00a0realloc\u00a0\u0438 \u043f\u0440\u043e\u0441\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0432 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f\u00a0<a href=\"https:\/\/github.com\/bminor\/glibc\/commit\/7a61e7f557a97ab597d6fca5e2d1f13f65685c61\" rel=\"noopener noreferrer nofollow\">[18]<\/a>.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/878170\/\"> https:\/\/habr.com\/ru\/articles\/878170\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430\u0434 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 EdgeDB \u0438 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0441 Python \u043d\u0430 Rust \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u0437\u0430 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0432\u0432\u043e\u0434\/\u0432\u044b\u0432\u043e\u0434. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u044b \u0443\u0437\u043d\u0430\u043b\u0438 \u043c\u043d\u043e\u0433\u043e \u0432\u0441\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e.<\/p>\n<h2>\u041e\u0442\u043a\u0430\u0437, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 ARM64<\/h2>\n<p>\u041c\u044b\u00a0 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0438 \u0434\u043b\u044f EdgeDB \u043d\u043e\u0432\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0431\u043e\u0440\u043a\u0438 HTTP. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 HTTP-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 reqwest. \u0412\u0441\u0451 \u0448\u043b\u043e \u0433\u043b\u0430\u0434\u043a\u043e: \u0444\u0438\u0447\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435, \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b\u0430 \u0442\u0435\u0441\u0442\u044b \u043d\u0430 \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u044b\u0445 \u0430\u0433\u0435\u043d\u0442\u0430\u0445 <code>x86_64<\/code> \u0438 \u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0439. \u041d\u043e \u043c\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438 \u043a\u043e\u0435-\u0447\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0435: \u0442\u0435\u0441\u0442\u044b \u0442\u043e \u0438 \u0434\u0435\u043b\u043e \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b\u0438 \u043d\u0430 \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u044b\u0445 \u0430\u0433\u0435\u043d\u0442\u0430\u0445 \u0434\u043b\u044f ARM64.<\/p>\n<p>\u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u0430 \u0432\u0437\u0430\u0438\u043c\u043d\u0443\u044e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443. \u0421\u0431\u043e\u0440\u043e\u0447\u043d\u044b\u0439 \u0430\u0433\u0435\u043d\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f, \u0437\u0430\u0432\u0438\u0441\u0430\u043b \u043d\u0430 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0438\u0441\u0442\u0435\u043a\u0430\u043b\u043e. \u0412 \u043b\u043e\u0433\u0430\u0445 \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u043e\u0441\u044c \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0435\u0441\u0442 \u043a\u0440\u0443\u0442\u0438\u043b\u0441\u044f \u0432\u043f\u0443\u0441\u0442\u0443\u044e. \u0417\u0430\u0442\u0435\u043c, \u0441\u043f\u0443\u0441\u0442\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u043e\u0432, \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0430\u0437\u043e\u043c \u0438 \u0432\u044b\u0434\u0430\u0432\u0430\u043b\u043e \u043e\u0448\u0438\u0431\u043a\u0443 \u00ab\u0432\u0440\u0435\u043c\u044f \u0438\u0441\u0442\u0435\u043a\u043b\u043e\u00bb.<\/p>\n<p>\u0412\u043e\u0442 \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b \u0432\u044b\u0432\u043e\u0434 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438:<\/p>\n<pre><code>Current runner version: '2.321.0' Runner name: '&lt;instance-id&gt;' Runner group name: 'Default'  (... 6 hrs of logs ...)  still running: test_immediate_connection_drop_streaming (pid=451) for 19874.78s  still running: test_immediate_connection_drop_streaming (pid=451) for 19875.78s  still running: test_immediate_connection_drop_streaming (pid=451) for 19876.78s  still running: test_immediate_connection_drop_streaming (pid=451) for 19877.78s  Shutting down test cluster...<\/code><\/pre>\n<p>\u0422\u0443\u0442 \u043c\u0430\u043b\u043e \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442. \u0421\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u0438\u0437-\u0437\u0430 \u0432\u0437\u0430\u0438\u043c\u043d\u043e\u0439 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0441 \u043d\u0430\u0448\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u041d\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043c\u044b \u043e\u0448\u0438\u0431\u0430\u043b\u0438\u0441\u044c. <\/p>\n<h2>\u041d\u0430\u0448\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/h2>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 ARM64? \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043d\u0435 \u043c\u043e\u0433\u043b\u0438 \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f. \u0421\u0440\u0435\u0434\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043c\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043b\u0438, \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u043f\u0430\u043c\u044f\u0442\u0438, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u043c\u0438 \u0432 Intel \u0438 ARM64. \u0412 Intel \u043f\u0440\u0438\u043d\u044f\u0442\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0442\u0440\u043e\u0433\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0430\u043c\u044f\u0442\u0438. \u041f\u0440\u0438\u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b, \u043f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u044f\u0445 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0449\u0438\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445 Intel (<a href=\"https:\/\/www.msully.net\/blog\/2015\/02\/25\/the-x86-memory-model\/\" rel=\"noopener noreferrer nofollow\">[1]<\/a>,\u00a0<a href=\"https:\/\/research.swtch.com\/hwmm\" rel=\"noopener noreferrer nofollow\">[2]<\/a>,\u00a0<a href=\"https:\/\/www.cl.cam.ac.uk\/~pes20\/weakmemory\/x86tso-paper.tphols.pdf\" rel=\"noopener noreferrer nofollow\">[3]<\/a>). \u0412 ARM \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0435\u043d\u0435\u0435 \u0441\u0442\u0440\u043e\u0433\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0430\u043c\u044f\u0442\u0438\u00a0<a href=\"https:\/\/dl.acm.org\/doi\/10.1145\/1353522.1353528\" rel=\"noopener noreferrer nofollow\">[4]<\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 (\u0441\u0440\u0435\u0434\u0438 \u043f\u0440\u043e\u0447\u0435\u0433\u043e) \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432. <\/p>\n<p>\u0421\u0430\u043b\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u043e\u0434\u0443 \u043a\u0432\u0430\u043b\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430 Ph.D.\u00a0<a href=\"https:\/\/www.msully.net\/thesis\/\" rel=\"noopener noreferrer nofollow\">[5]<\/a>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0438 \u043f\u0440\u0438\u0433\u043b\u0430\u0441\u0438\u043b\u0438 \u0435\u0433\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442.<\/p>\n<h2>\u041e\u0442\u043b\u0430\u0434\u043a\u0430 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u0434\u043b\u044f \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438<\/h2>\n<p>\u041d\u0430\u0448\u0438 \u043c\u0430\u0448\u0438\u043d\u044b \u0434\u043b\u044f \u043d\u043e\u0447\u043d\u044b\u0445 \u0441\u0431\u043e\u0440\u043e\u043a \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 Amazon AWS. \u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430 \u043d\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u043d\u0435\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u041f\u0440\u0438\u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u0430\u0433\u0435\u043d\u0442\u0430\u043c github \u0447\u0435\u0440\u0435\u0437 ssh\u00a0<a href=\"https:\/\/github.com\/marketplace\/actions\/ssh-to-github-action-runner\" rel=\"noopener noreferrer nofollow\">[6]<\/a>, \u0445\u043e\u0440\u043e\u0448\u043e \u0431\u044b \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a dmesg \u0438 \u0434\u0440\u0443\u0433\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u043b\u043e\u0433\u0430\u043c.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043c\u044b (\u0421\u0430\u043b\u043b\u0438 \u0438 \u041c\u044d\u0442\u0442) \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a \u0430\u0433\u0435\u043d\u0442\u0443 \u0434\u043b\u044f ARM64 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c.<\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u0437\u0430\u0448\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 SSH \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0443 \u0434\u043b\u044f \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438, \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0432\u0438\u0441\u0448\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u043d\u0435\u043c\u0443:<\/p>\n<pre><code>$ aws ssm start-session --region us-west-2 --target i-&lt;instance-id&gt; $ ps aux | grep \"451\" &lt;no output&gt;<\/code><\/pre>\n<p>O\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u044d\u0442\u043e \u0432\u0435\u0440\u043d\u043e! \u041c\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0431\u043e\u0440\u043a\u0443 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 Docker, \u0430 \u0443 \u043d\u0435\u0433\u043e \u2014 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d \u0434\u043b\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432:<\/p>\n<pre><code>$ sudo docker exec -it &lt;container-id&gt; \/bin\/sh # ps aux | grep \"451\" &lt;no output&gt;<\/code><\/pre>\n<p>\u041f\u043e\u0441\u0442\u043e\u0439\u0442\u0435-\u043a\u0430. \u0417\u0434\u0435\u0441\u044c \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0442\u043e\u0436\u0435 \u043d\u0435\u0442.<\/p>\n<p>\u0417\u043d\u0430\u0447\u0438\u0442, \u044d\u0442\u043e \u0431\u044b\u043b\u0430 \u043d\u0435 \u0432\u0437\u0430\u0438\u043c\u043d\u0430\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u2014 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f.<\/p>\n<p>\u041a\u0430\u043a \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f, \u043d\u0430\u0448 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0430\u0433\u0435\u043d\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0441\u043c\u043e\u0433 \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u041d\u043e \u043b\u0430\u0434\u043d\u043e, \u044d\u0442\u0443 \u043e\u0448\u0438\u0431\u043a\u0443 \u043c\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043c \u043a\u0430\u043a-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u0442\u043e\u043c. \u041c\u043e\u0436\u0435\u043c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u043b\u0438 \u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0434\u0430\u043c\u043f \u043f\u0430\u043c\u044f\u0442\u0438. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 Docker \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d \u0434\u043b\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432, \u0434\u0430\u043c\u043f \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u0430 \u0445\u043e\u0441\u0442 \u0441 Docker. \u041c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0434\u043e\u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u043d\u0435\u0433\u043e \u0438\u0437\u0432\u043d\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <code>journalctl<\/code>:<\/p>\n<pre><code>$ sudo journalctl systemd-coredump: Process 59530 (python3) of user 1000 dumped core.                   Stack trace of thread &lt;tid&gt;:                   ...<\/code><\/pre>\n<p>\u0410\u0433\u0430! \u041d\u0430\u0448\u043b\u0438 \u0435\u0433\u043e. \u041a\u0430\u043a \u0438 \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c, \u0434\u0430\u043c\u043f \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043b\u0435\u0436\u0438\u0442 \u0432 <code>\/var\/lib\/systemd\/coredump\/<\/code>. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0437-\u0437\u0430 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430\u0445 \u0438\u043c\u0451\u043d \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432. \u0412\u043d\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c pid 59530, \u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u2014 1000.<\/p>\n<p>\u041c\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0438 \u0434\u0430\u043c\u043f \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u00a0gdb, \u0436\u0435\u043b\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0436\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430\u043c \u0432\u044b\u0441\u044b\u043f\u0430\u043b\u0441\u044f \u0432\u043e\u0440\u043e\u0445 \u043e\u0448\u0438\u0431\u043e\u043a:<\/p>\n<pre><code>$ gdb (gdb) core-file core.python3.1000.&lt;...&gt;.59530.&lt;...&gt; warning: Can't open file \/lib64\/libnss_files-2.17.so during file-backed mapping note processing warning: Can't open file \/lib64\/librt-2.17.so during file-backed mapping note processing warning: Can't open file \/lib64\/libc-2.17.so during file-backed mapping note processing warning: Can't open file \/lib64\/libm-2.17.so during file-backed mapping note processing warning: Can't open file \/lib64\/libutil-2.17.so during file-backed mapping note processing ... etc ... (gdb) bt #0  0x0000ffff805a3e90 in ?? () #1  0x0000ffff806a7000 in ?? () Backtrace stopped: not enough registers or memory available to unwind further<\/code><\/pre>\n<p>\u041b\u0430\u0434\u043d\u043e. \u042d\u0442\u043e \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u043b\u043e. \u041c\u044b \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0432\u043d\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u0430 \u043d\u0430\u0448\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432\u0435\u0441\u044c\u043c\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043d\u0438\u0445 \u043d\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c <code>gdb<\/code>.<\/p>\n<p>\u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0432\u0441\u0435 \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c\u00a0<code>gdb<\/code>, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u044b\u00a0<code>.so<\/code>:<\/p>\n<pre><code># mkdir \/container # docker cp &lt;instance&gt;:\/lib \/container # docker cp &lt;instance&gt;:\/usr \/container ... etc ... $ gdb (gdb) set solib-absolute-prefix \/container (gdb) file \/container\/edgedb\/bin\/python3 Reading symbols from \/container\/edgedb\/bin\/python3... (No debugging symbols found in \/container\/edgedb\/bin\/python3) (gdb) core-file core.python3.1000.&lt;...&gt;.59530.&lt;...&gt; (gdb) bt #0  0x0000ffff805a3e90 in getenv () from \/container\/lib64\/libc.so.6 #1  0x0000ffff8059c174 in __dcigettext () from \/container\/lib64\/libc.so.6<\/code><\/pre>\n<p>\u0413\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435!<\/p>\n<p>\u041d\u043e \u0432 \u043d\u0430\u0448\u0435\u043c \u043d\u043e\u0432\u043e\u043c HTTP-\u043a\u043e\u0434\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u0432\u044b\u044f\u0432\u0438\u043b\u0430 \u043d\u0435 \u043e\u0442\u043a\u0430\u0437, \u0430 \u043d\u0435\u0447\u0442\u043e \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0435: <\/p>\n<pre><code>(gdb) bt #0  0x0000ffff805a3e90 in getenv () from \/container\/lib64\/libc.so.6 #1  0x0000ffff8059c174 in __dcigettext () from \/container\/lib64\/libc.so.6 #2  0x0000ffff805f263c in strerror_r () from \/container\/lib64\/libc.so.6 #3  0x0000ffff805f254c in strerror () from \/container\/lib64\/libc.so.6 #4  0x00000000005bb76c in PyErr_SetFromErrnoWithFilenameObjects () #5  0x00000000004e4c14 in ?? () #6  0x000000000049f66c in PyObject_VectorcallMethod () #7  0x00000000005d21e4 in ?? () #8  0x00000000005d213c in ?? () #9  0x00000000005d1ed4 in ?? () #10 0x00000000004985ec in _PyObject_MakeTpCall () #11 0x00000000004a7734 in _PyEval_EvalFrameDefault () #12 0x000000000049ccb4 in _PyObject_FastCallDictTstate () #13 0x00000000004ebce8 in ?? () #14 0x00000000004985ec in _PyObject_MakeTpCall () #15 0x00000000004a7734 in _PyEval_EvalFrameDefault () #16 0x00000000005bee10 in ?? () #17 0x0000ffff7ee1f5dc in ?? () from \/container\/...\/_asyncio.cpython-312-aarch64-linux-gnu.so #18 0x0000ffff7ee1fd94 in ?? () from \/container\/...\/_asyncio.cpython-312-aarch64-linux-gnu.so<\/code><\/pre>\n<p>\u041c\u044b \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0443\u044e\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044e\u00a0<code>getenv<\/code>. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u0437\u043d\u0430\u043b\u0438, \u0447\u0442\u043e \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f GLIBC 2.17, \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u044b\u0441\u043a\u0430\u043b\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 <code>getenv<\/code>, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0438\u0442\u044c <a href=\"https:\/\/elixir.bootlin.com\/glibc\/glibc-2.17.90\/source\/stdlib\/getenv.c#L33\" rel=\"noopener noreferrer nofollow\">[7]<\/a>:<\/p>\n<pre><code class=\"cpp\">\/* ... \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043f\u0435\u0440\u0435\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0434\u043b\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0442\u0438 ... *\/ char * getenv (const char *name) {   size_t len = strlen (name);   char **ep;   uint16_t name_start;    if (__environ == NULL || name[0] == '\\0')     return NULL;    if (name[1] == '\\0') {     \/* \u0418\u043c\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432\u0441\u0435\u0433\u043e \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u0435\u0440\u0432\u044b\u0435 \u0434\u0432\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0432 \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u2014 \u044d\u0442\u043e\u0442 \u0441\u0438\u043c\u0432\u043e\u043b \u0438 \u0441\u0438\u043c\u0432\u043e\u043b '='.  *\/     name_start = ('=' &lt;&lt; 8) | *(const unsigned char *) name;     for (ep = __environ; *ep != NULL; ++ep) {         uint16_t ep_start = (((unsigned char *) *ep)[0]                            | (((unsigned char *) *ep)[1] &lt;&lt; 8));       if (name_start == ep_start)         return &amp;(*ep)[2];     }   } else {     name_start = (((const unsigned char *) name)[0]       | (((const unsigned char *) name)[1] &lt;&lt; 8));     len -= 2;     name += 2;      for (ep = __environ; *ep != NULL; ++ep) {       uint16_t ep_start = (((unsigned char *) *ep)[0]                            | (((unsigned char *) *ep)[1] &lt;&lt; 8));       if (name_start == ep_start &amp;&amp; !strncmp (*ep + 2, name, len)           &amp;&amp; (*ep)[len + 2] == '=')         return &amp;(*ep)[len + 3];     }   }    return NULL; }<\/code><\/pre>\n<pre><code> (gdb) disassemble getenv Dump of assembler code for function getenv:     0x0000ffff805a3de4 &lt;+0&gt;:     stp     x29, x30, [sp, #-64]!     0x0000ffff805a3de8 &lt;+4&gt;:     mov     x29, sp     0x0000ffff805a3dec &lt;+8&gt;:     stp     x19, x20, [sp, #16]     0x0000ffff805a3df0 &lt;+12&gt;:    stp     x21, x22, [sp, #32]     0x0000ffff805a3df4 &lt;+16&gt;:    stp     x23, x24, [sp, #48]     0x0000ffff805a3df8 &lt;+20&gt;:    mov     x22, x0     0x0000ffff805a3dfc &lt;+24&gt;:    bl      0xffff805f2784 &lt;strlen&gt;     0x0000ffff805a3e00 &lt;+28&gt;:    mov     x24, x0     0x0000ffff805a3e04 &lt;+32&gt;:    adrp    x0, 0xffff806eb000     0x0000ffff805a3e08 &lt;+36&gt;:    ldr     x0, [x0, #3704]     0x0000ffff805a3e0c &lt;+40&gt;:    ldr     x20, [x0]     0x0000ffff805a3e10 &lt;+44&gt;:    cbz     x20, 0xffff805a3ed8 &lt;getenv+244&gt;     0x0000ffff805a3e14 &lt;+48&gt;:    ldrb    w1, [x22]     0x0000ffff805a3e18 &lt;+52&gt;:    cbz     w1, 0xffff805a3ed0 &lt;getenv+236&gt;     0x0000ffff805a3e1c &lt;+56&gt;:    ldrb    w21, [x22, #1]     0x0000ffff805a3e20 &lt;+60&gt;:    ldr     x19, [x20]     0x0000ffff805a3e24 &lt;+64&gt;:    cbnz    w21, 0xffff805a3e70 &lt;getenv+140&gt;     0x0000ffff805a3e28 &lt;+68&gt;:    mov     w21, #0x3d00                    \/\/ #15616     0x0000ffff805a3e2c &lt;+72&gt;:    orr     w21, w1, w21     0x0000ffff805a3e30 &lt;+76&gt;:    cbnz    x19, 0xffff805a3e40 &lt;getenv+92&gt;     0x0000ffff805a3e34 &lt;+80&gt;:    b       0xffff805a3e58 &lt;getenv+116&gt;     0x0000ffff805a3e38 &lt;+84&gt;:    ldr     x19, [x20, #8]!     0x0000ffff805a3e3c &lt;+88&gt;:    cbz     x19, 0xffff805a3e58 &lt;getenv+116&gt;     0x0000ffff805a3e40 &lt;+92&gt;:    ldrb    w1, [x19, #1]<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-446660","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/446660","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=446660"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/446660\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=446660"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=446660"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=446660"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}