systemd-develã«é¢ããïŒ 6æãš8æã®ïŒãã£ã¹ã«ãã·ã§ã³ã«ãã£ãŠããªã¬ãŒãããŸããã
systemd-nspawnã¯ããã¯ã€ããªã¹ãã«ç»é²ãããŠããªãã·ã¹ãã ã³ãŒã«ã«å¯ŸããŠEPERM
ãè¿ãããšãéžæããŸãã ãã ããããã«ãããlibcãENOSYS
ããã§ãã¯ããå¥ã®å®è£
ã«ãã©ãŒã«ããã¯ããopenat2
ãããªå Žåã«åé¡ãçºçããŸãã
ç§ã«ã¯ããã»ãŒæ£ããã解決çã¯ãsyscallçªå·ãseccompã®æ§ç¯æã«ååšããŠããå®çŸ©æžã¿ã®syscallã®ç¯å²å
ã«ãããã©ããã確èªããããšã§ããããã«æãããŸãã ã³ãŒããŒã±ãŒã¹ããããšç¢ºä¿¡ããŠããŸãïŒäžéšã®ã¢ãŒããå¥åŠãªããšãããããšã¯ç¥ã£ãŠããŸãïŒãã syscalls.csv
ãªã©ã解æããããŒã«ããæ¢ç¥ã®æ倧ã·ã¹ãã ã³ãŒã«æ°ã«å¯ŸããŠåçŽãª#define
ãçæã§ããå Žå䜿ããïŒ
ããã«ã¡ã¯@ srd424ã ãã®åé¡ã§ããªããäœãæ±ããŠããã®ãã確å®ã«ç解ããããšæããŸã...ãã®ç¹å®ã®ã·ã¹ãã ã³ãŒã«ããã®ã¢ãŒãã«å®è£ ãããŠãããã©ããã«é¢ä¿ãªããlibseccompãç¹å®ã®ã·ã¹ãã ã³ãŒã«ã«ã€ããŠãç¥ã£ãŠããããã©ãããåºæ¬çã«ç¥ããããšæããŸã/ ABIãããã§ããïŒ
ãããããªããç§ã¯ããªããããªããæãæ
å ±ãåŸãããã«seccomp_syscall_resolve_name(...)
ã䜿ãããšãã§ããã¯ãã ãšä¿¡ããŠããŸãã æ»ãå€ã__NR_SCMP_ERROR
å Žåãsyscallã¯libseccompã«èªèãããŸãããæ£ã®å Žåãsyscallã¯ãã€ãã£ãarch / ABIã«ååšããè² ã®å Žåãsyscallã¯ãã€ãã£ãarch /ã«ååšããŸããã ABIã ããã¯ããªãã®ããã«åããŸããïŒ
ããã¯ãã£ã«ã¿ãŒã..é·èã®åã«ãããããããŸããïŒ
ç§ãæãã§ããã®ã¯ããã£ã«ã¿ãŒã«ãŒã«ã§ã·ã¹ãã ã³ãŒã«çªå·ãæ¢ç¥ã®æ倧å€ãšæ¯èŒãã倧ããå Žåã¯ENOSYS
ãè¿ããããã§ãªãå Žåã¯EPERM
è¿ãããšã§ãïŒãã¯ã€ããªã¹ãã«ç»é²ãããã·ã¹ãã ã³ãŒã«ãåŠçããããšä»®å®ããŸãïŒä»¥åã®ã«ãŒã«ã«ãããïŒ
ãã ãã seccomp_rule_add
ã®è©³çŽ°ãèŠããšããããæ©èœãããã©ããã¯ããããŸãããsyscallçªå·ã¯ç¹å¥ã«æ±ãããŸãã çã®bpfãã£ã«ã¿ãŒã¯ãããããããè¡ãããã«æ§ç¯ãããå¯èœæ§ããããŸãããããã¯libseccompãžã®ãã䟵襲çãªå€æŽãæå³ããŸã-ããããç§ã®è³éççŽãè¶
ããŠããŸãïŒ
ã©ã€ãã©ãªã®è€æ°ã®ãŠãŒã¶ãŒã§å ã®åé¡ãçºçããå¯èœæ§ããããããlibseccompã«è¿œå ããã®ã劥åœãªæ©èœã§ããå Žåãšããã§ãªãå ŽåããããŸãã ïŒã¡ããã©ïŒïŒããå°ãæŽç·Žãããããã©ã«ãã®ã¢ã¯ã·ã§ã³ãçæããåé¡ã®ããã§ãã
ããã¯ãã£ã«ã¿ãŒã..é·èã®åã«ãããããããŸããïŒ
ããã§äœãèšã£ãŠããã®ãããããããŸãã...ïŒ seccomp_syscall_resolve_name(...)
ã®åŒã³åºãã¯ãå®éã«ã¯ãã£ã«ã¿ãŒã«åœ±é¿ãäžããŸãããå
éšã®libseccomp syscall dbã«ã¯ãšãªãå®è¡ããŠãsyscallã解決ããŸãã ããªãã¯ãããäžåºŠãååããŸãã¯æ±ºããŠåŒã¶ããšãã§ããŸããããããŠããªãã®ãã£ã«ã¿ãŒã¯ãŸã£ããåãã«ãªããŸã:)
ç§ãæãã§ããã®ã¯ããã£ã«ã¿ãŒã«ãŒã«ã§ã·ã¹ãã ã³ãŒã«çªå·ãæ¢ç¥ã®æ倧å€ãšæ¯èŒãããããã倧ããå Žåã¯ENOSYSãè¿ãããã以å€ã®å Žåã¯EPERMãè¿ãããšã§ãïŒãã¯ã€ããªã¹ãã«ç»é²ãããã·ã¹ãã ã³ãŒã«ã以åã®ã«ãŒã«ã§åŠçãããŠãããšä»®å®ããŸãïŒã
ããŠãç§ã¯ããªããä»äœãæ±ããŠããã®ãç解ãå§ããŠãããšæããŸãã syscallãlibseccompãèªèããŠããªãå Žåãã¢ããªã±ãŒã·ã§ã³ã³ãŒãã§ã¯ãªãããã£ã«ã¿ãŒèªäœã«ç¹å®ã®ã¢ã¯ã·ã§ã³ïŒäžèšã®äŸã§ã¯ENOSYS
ãè¿ãïŒãå®è¡ããããã§ããïŒ ããã¯åºæ¬çã«ããã§ããããããšãç§ã¯åã³äœããéããŠããŸããïŒ
äžèšã®2çªç®ã®ã¹ã¬ããã®ãã®ã³ã¡ã³ãã¯ç§ãç¬é¡ã«ããŸããïŒ+1ïŒ
libseccompã§ã®ENOSYSåŠçã«ã€ããŠã®ãã£ã¹ã«ãã·ã§ã³ãéãããšããŸããã
https://github.com/seccomp/libseccomp/issues/286 ããããç§ã¯ããããããã§ã¯ãããŸãã
éåžžã«éŠå°Ÿäžè²«ããŠããã
ããªããèšåããã¹ã¬ãããèªãã åŸãç§ã¯åãããŒãžã«ãããšæããŸãã
誰ãïŒlibseccompãnspawnã誰ã§ãïŒãENOSYS
è¿ãå¯èœæ§ãããå Žåãglibcã¯æ°ããã·ã¹ãã ã³ãŒã«ïŒäŸïŒ openat2
ïŒããå€ãã·ã¹ãã ã³ãŒã«ïŒäŸïŒ openat
ã«ãã©ãŒã«ããã¯ããããšããŸãã EPERM
ãglibcã«è¿ããšãglibcã¯åŒã³åºããèš±å¯ãããŠããªããšèŠãªãã ãã§ãglibcã¯ãããããŸãã ããã¯ãã®å·ã®æåã®ã³ã¡ã³ãã®å
¬æ£ãªèšãæãã§ããïŒ
ãªã¯ãšã¹ãã¯åŠ¥åœã ãšæããŸãã libseccompããããã®ããŒãºãæºããããšãã§ãããã©ãããããå°ãèããå¿ èŠããããŸãããçŸæç¹ã§ã¯ç°è«ã¯ãããŸããã ããã«ã¯ããšã³ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããæ©äŒã確å®ã«ãããŸãã
RFEãããããšãã
誰ãïŒlibseccompãnspawnã誰ã§ãïŒã
ENOSYS
è¿ãå¯èœæ§ãããå Žåãglibcã¯æ°ããã·ã¹ãã ã³ãŒã«ïŒäŸïŒopenat2
ïŒããå€ãã·ã¹ãã ã³ãŒã«ïŒäŸïŒopenat
ã«ãã©ãŒã«ããã¯ããããšããŸããEPERM
ãglibcã«è¿ããšãglibcã¯åŒã³åºããèš±å¯ãããŠããªããšèŠãªãã ãã§ãglibcã¯ãããããŸãã ããã¯ãã®å·ã®æåã®ã³ã¡ã³ãã®å ¬æ£ãªèšãæãã§ããïŒ
ã¯ããããã§ããã systemdã®äººã ã®æèŠã¯ãEPERMã¯ããããããšã³ããŠãŒã¶ãŒ/管çè ã«ãèš±å¯ãããŠããªããããšãäŒãããããæåŠãããã·ã¹ãã ã³ãŒã«ã«å¯ŸããŠã»ãšãã©ã®å Žååççã§ãããšãããã®ã§ãã ãããã£ãŠããæ°ãããã·ã¹ãã ã³ãŒã«ãšãå€ããã·ã¹ãã ã³ãŒã«ãåºå¥ããèªèãããªããã®ã«å¯ŸããŠENOSYSãå®è¡ãããšããã¢ã€ãã¢ã ããã©ãŒãã³ã¹äžã®çç±ãããBPFå ã®ãã¹ãŠã®ã·ã¹ãã ã³ãŒã«ãåæããŠãã¹ãããããªããšæããŸãããã®ãããã¢ãŒãããšã®æ¢ç¥ã®ã·ã¹ãã ã³ãŒã«æ°ã®æé«æ°Žæºç¹ã远跡ããããšã¯ããæåã®åªåãã®æ¹æ³ã®ããã«æãããŸããã
dockerãpodmanãlxcãªã©ãseccompãã£ã«ã¿ãªã³ã°ã§äœãããã®ããç¥ããããããã¡ãªããããããããã©ããã確èªããã®ã¯èå³æ·±ãããšã§ãã ãããŸã§ã®éãseccompã€ãã³ãã®ãã°èšé²ãå¯èœã«ããnspawnã®ããããPRããŸãããããã«ããããããã°ãå°ãç°¡åã«ãªããŸãã
ãªã¯ãšã¹ãã¯åŠ¥åœã ãšæããŸãã libseccompããããã®ããŒãºãæºããããšãã§ãããã©ãããããå°ãèããå¿ èŠããããŸãããçŸæç¹ã§ã¯ç°è«ã¯ãããŸããã ããã«ã¯ããšã³ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããæ©äŒã確å®ã«ãããŸãã
RFEãããããšãã
ç§ã¯@drakenclimberã«åæã
ããªãåºæ¬çãªã¬ãã«ã§ã¯ãããã¯RFEïŒ11ã«äŒŒãŠãããæçµçã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠã²ã©ãæ¹æ³ã§ãããå®è£ ããæãç°¡åãªæ¹æ³ã§ããå¯èœæ§ããããŸããã¢ããªã±ãŒã·ã§ã³ã¯ããµããŒããããæ倧ã®ã«ãŒãã«APIããŒãžã§ã³ãæå®ã§ããŸãã v5.8ïŒæããã«ããŒã¯ã³åãããŠããïŒãããã³ãã以éã®ç¹å®ã®ã¢ã¯ã·ã§ã³ãšãlibseccompãæ®ããåŠçããŸãã ããã¯ããªããã¡@ srd424ã®ããã«åããŸããïŒ
ããã«ã¡ã¯ãããã¯https://github.com/systemd/systemd/pull/16739ã§ãè°è«ãããŸãã
ã¢ããªã±ãŒã·ã§ã³ã¯ããµããŒããããŠããã«ãŒãã«APIã®æ倧ããŒãžã§ã³ïŒv5.8ïŒæããã«ããŒã¯ã³åãããŠããïŒãªã©ïŒãšããã以éã®ã¢ã¯ã·ã§ã³ãæå®ã§ããŸãããã®åŸãlibseccompãæ®ããåŠçããŸãã
ããã¯ããŸãããã§ãããã systemd / systemd-nspawnã§ã¯ãæ瀺çã«èš±å¯ãªã¹ãããã³æåŠãªã¹ããããã·ã¹ãã ã³ãŒã«ã«å¯ŸããŠã«ã¹ã¿ã errnoãè¿ããããµããŒããããŠããã«ãŒãã«APIããŒãžã§ã³ãã®ä»ã®ã·ã¹ãã ã³ãŒã«ã«å¯ŸããŠEPERMãè¿ããæ°ããã·ã¹ãã ã³ãŒã«ã«å¯ŸããŠENOSYSãè¿ããŸãã
å®è£
ã¯ããã»ã©è€éã§ã¯ãªããšæããŸãã ããšãã°ãamd64ã®å Žåããæ¢ç¥ã®ãã·ã¹ãã ã³ãŒã«ã¯n <= 181 || 186 <= n <= 235 || 237 <= n <= 334 || 424 <= n <= 439
ãšããŠè¡šãããšãã§ããŸãã ãããŠããã®ãããªåŒã¯ãsyscallããŒãã«ããããã°ã©ã ã§ç°¡åã«çæã§ããŸãã
ä»æã¯ã«ãã§ã€ã³ãäžè¶³ããŠããŸãããENOSYSãåŠçããããšã§ã倧ããªèš±å¯ãªã¹ããå°ããªãããªã¹ãã«å€ããŠãããã©ãŒãã³ã¹ãåäžãããããšãã§ããã§ããããã
å®è£ ã¯ããã»ã©è€éã§ã¯ãªããšæããŸãã ããšãã°ãamd64ã®å Žåããæ¢ç¥ã®ãã·ã¹ãã ã³ãŒã«ã¯n <= 181 ||ãšããŠè¡šãããšãã§ããŸãã 186 <= n <= 235 || 237 <= n <= 334 || 424 <= n <= 439ããã®ãããªåŒã¯ãsyscallããŒãã«ããããã°ã©ã ã§ç°¡åã«çæã§ããŸãã
ãåç¥ã®ããã«ãå®éã®BPFã¯arch / ABIãšã«ãŒãã«ããŒãžã§ã³ã®äž¡æ¹ã«åºæã®ãã®ã«ãªããŸãã äžèšã®x86_64ã®äŸã§ã¯ãBPFã¯ããã»ã©æªãã¯ãããŸããããä»ã®ã¢ãŒã/ããŒãžã§ã³ã«ãšã£ãŠã¯ããã»ã©å¹žéã§ã¯ãããŸããã ãšã«ãããããã¯ä»ãåãããšãå¹æçã«èŠæ±ããŠãã2ã€ã®åé¡ãªã®ã§ãç§ãã¡ãããããããšã ãšæããŸã...ç§ã¯ãããã©ãã»ã©ç°¡åã«ãªããã«ã€ããŠé£ã³è·³ãå§ããã€ããã¯ãããŸãã; ïŒã
94ãé¢é£ããŠããå¯èœæ§ããããŸãã
ã¯ãããããã®ãããªãã®ã§ãã ç¯å²ãå«ãŸããŸãããïŒ94ã¯åŒã³åºãå ãæå®ããåŒæ°ã®ç¯å²ã«é¢ãããã®ã§ãïŒããã¯ãŸã ãããããšæããŸããPRã¯ã¡ããã©æªãææã«æ¥ãã®ã§ãAPIã«ã¯åŸ®èª¿æŽãå¿ ââèŠã ãšæããŸãïŒãã©ã€ãã©ãªèªäœã«ãã£ãŠçæãããæé»çã«äœæãããã·ã¹ãã ã³ãŒã«ç¯å²ã
ä»æã¯ã«ãã§ã€ã³ãäžè¶³ããŠããŸãããENOSYSãåŠçããããšã§ã倧ããªèš±å¯ãªã¹ããå°ããªãããªã¹ãã«å€ããŠãããã©ãŒãã³ã¹ãåäžãããããšãã§ããã§ããããã
ã¢ããªã±ãŒã·ã§ã³ã®èŠ³ç¹ãããããšãã°systemdã®å Žåããæ°ãããã·ã¹ãã ã³ãŒã«ããããã¯ããããšããŠããå Žåã¯ãããã§ã...åãããšã«ã€ããŠè©±ããŠãããšä»®å®ããŸã:)
å ·äœçã«ã¯ãçŸæç¹ã§ã¯ãç¹å®ã®ã·ã¹ãã ã³ãŒã«ã_å®å šã«_ãããã¯ããããšãã人ã¯ãæ°ããã«ãŒãã«ãã©ã®ã·ã¹ãã ã³ãŒã«ãè¿œå ãããããããªããããallowlistãå¹æçã«äœ¿çšããå¿ èŠããããŸãã libseccompã«äžæãªã·ã¹ãã ã³ãŒã«ãèªåçã«ãããã¯ããããã«èŠæ±ã§ããå Žåãããã¯ä»£ããã«å°ããªæåŠãªã¹ãã«å®å šã«åãæ¿ããããšãã§ããããšãæå³ããŸããïŒ
å ·äœçã«ã¯ãçŸæç¹ã§ã¯ãç¹å®ã®ã·ã¹ãã ã³ãŒã«ã_å®å šã«_ãããã¯ããããšãã人ã¯ãæ°ããã«ãŒãã«ãã©ã®ã·ã¹ãã ã³ãŒã«ãè¿œå ãããããããªããããallowlistãå¹æçã«äœ¿çšããå¿ èŠããããŸãã libseccompã«äžæãªã·ã¹ãã ã³ãŒã«ãèªåçã«ãããã¯ããããã«èŠæ±ã§ããå Žåãããã¯ä»£ããã«å°ããªæåŠãªã¹ãã«å®å šã«åãæ¿ããããšãã§ããããšãæå³ããŸããïŒ
ããã¯çµ¶å¯Ÿã«çŽ æŽãããæ©èœã«ãªãã®ã§ãç§ãã¡ã¯ããã«å°éã§ããããšãå¿ããé¡ã£ãŠããŸãã ããšãã°ãDockerã¯çŸåšãèš±å¯ãªã¹ããæ¡çšããŠããã
ãã®ãããªå€§ããªãªã¹ãã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ã¯ãæ³å€ãªãã®ã«ãªãå¯èœæ§ããããŸãã v2.5ã§è¿œå ãããã€ããªããªãŒæ©èœã䜿çšããããšã§ãå€å°è»œæžã§ããããšã«æ³šæããŠãã ããã
å ·äœçã«ã¯ãçŸæç¹ã§ã¯ãç¹å®ã®ã·ã¹ãã ã³ãŒã«ã_å®å šã«_ãããã¯ããããšãã人ã¯ãæ°ããã«ãŒãã«ãã©ã®ã·ã¹ãã ã³ãŒã«ãè¿œå ãããããããªããããallowlistãå¹æçã«äœ¿çšããå¿ èŠããããŸãã libseccompã«äžæãªã·ã¹ãã ã³ãŒã«ãèªåçã«ãããã¯ããããã«èŠæ±ã§ããå Žåãããã¯ä»£ããã«å°ããªæåŠãªã¹ãã«å®å šã«åãæ¿ããããšãã§ããããšãæå³ããŸããïŒ
ãããã©ã®ããã«æ©èœãããããããŸããã libseccompã«ã¯äžæã§ãããæåŠãªã¹ãã®äœæè ã«ã¯äžæã§ãããšããããšã¯ãéåžžãç°ãªãæå³ãæã¡ãŸãã ããã¯ãlibseccompããµããŒããããŠããã·ã¹ãã ã³ãŒã«ãå éšã§ããæ確ã«ææ¡ããŠããŠããæŠå¿µäžã®åé¡ã解æ¶ãããªãããšãæå³ããŸãã
è¯ãç¹-ãããæ©èœããããã«ã¯ãã«ãŒãã«ããŒãžã§ã³ã§ã¿ã°ä»ããããæ確ã«å®çŸ©ãããã»ãããå¿ èŠã ãšæããŸãããããã«ã€ããŠã¯å°ãè°è«ãããŠããããã§ãã
å®è£ ã¯ããã»ã©è€éã§ã¯ãªããšæããŸãã ããšãã°ãamd64ã®å Žåããæ¢ç¥ã®ãã·ã¹ãã ã³ãŒã«ã¯n <= 181 ||ãšããŠè¡šãããšãã§ããŸãã 186 <= n <= 235 || 237 <= n <= 334 || 424 <= n <= 439ããã®ãããªåŒã¯ãsyscallããŒãã«ããããã°ã©ã ã§ç°¡åã«çæã§ããŸãã
ãåç¥ã®ããã«ãå®éã®BPFã¯arch / ABIãšã«ãŒãã«ããŒãžã§ã³ã®äž¡æ¹ã«åºæã®ãã®ã«ãªããŸãã äžèšã®x86_64ã®äŸã§ã¯ãBPFã¯ããã»ã©æªãã¯ãããŸããããä»ã®ã¢ãŒã/ããŒãžã§ã³ã«ãšã£ãŠã¯ããã»ã©å¹žéã§ã¯ãããŸããã ãšã«ãããããã¯ä»ãåãããšãå¹æçã«èŠæ±ããŠãã2ã€ã®åé¡ãªã®ã§ãç§ãã¡ãããããããšã ãšæããŸã...ç§ã¯ãããã©ãã»ã©ç°¡åã«ãªããã«ã€ããŠé£ã³è·³ãå§ããã€ããã¯ãããŸãã; ïŒã
ããŒãã«ã¯ããªãé£ç¶ããŠããŸãã
>>> l = {int(s[1]):s[0] for s in (s.split() for s in open('syscalls-x86_64').readlines()) if len(s)>1}; x = np.array(sorted(l.keys())); np.diff(x)
array([ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 90, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1])
>>> l = {int(s[1]):s[0] for s in (s.split() for s in open('syscalls-alpha').readlines()) if len(s)>1}; x = np.array(sorted(l.keys())); np.diff(x)
array([ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 1, 1,
1, 1, 1, 2, 1, 1, 1, 3, 12, 3, 3, 1, 11, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 39, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 3, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2, 1, 1, 1])
>>> l = {int(s[1]):s[0] for s in (s.split() for s in open('syscalls-arm').readlines()) if len(s)>1}; x = np.array(sorted(l.keys())); np.diff(x)
array([1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 3, 1, 1, 2, 1, 2, 3, 4,
1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 2, 1, 2, 3, 1, 1,
1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 3,
1, 1, 1, 1, 1, 1, 2, 1, 3, 1, 1, 1, 1, 1, 3, 3, 1, 1, 2, 1, 1, 1,
1, 2, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
>>> l = {int(s[1]):s[0] for s in (s.split() for s in open('syscalls-riscv64').readlines()) if len(s)>1}; x = np.array(sorted(l.keys())); np.diff(x)
array([ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 16, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 130, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1])
https://github.com/systemd/systemd/pull/16819ã§systemd-nspawnã®ãæ¢ç¥ã®ãã·ã¹ãã ã³ãŒã«ã®ãã£ã«ã¿ãŒãå®è£ ããŸããhttps://github.com/systemd/systemd/pull/16819/commits/158e30ffd9355a7640a7276276eb9219b6c87914ã«ã¯ãlibseccompã§çæãããããã°ã©ã ã®ãã³ãããããŸãã ãããã®ãã³ãã¯é·ãã®ã§ãããã§ã¯ç¹°ãè¿ããŸããããSCMP_FLTATR_CTL_OPTIMIZEã䜿çšãããšãããã°ã©ã ãããå¹ççã«ãªããŸãããããé·ããªããŸãã ç¯å²æ¯èŒã䜿çšããããšã§ãç©äºãæ倧50åã®1ã«ççž®ã§ããŸãã
ç§ã¯ãã®ã¹ã¬ãããèŠã€ããã°ããã§ãåããããªè¡ãèããŠãããšèšã£ãŠãã£ã€ã ã鳎ãããŸãããããã¯ééããªãDocker / runcã解決ããããšæã£ãŠããããšã§ãã æ倧ã®ã«ãŒãã«ããŒãžã§ã³ã§ãããè¡ãããšã¯ããããããããè¡ãããã®æãè¯ãæ¹æ³ã§ããããã¯ããããã¡ã€ã«ã©ã€ã¿ãŒïŒããã³ã³ã³ãããŒã©ã³ã¿ã€ã ïŒããé äžåã§è¿œå ãããã·ã¹ãã ã³ãŒã«ããå·çæç¹ã§ã®ææ°ã®ã·ã¹ãã ã³ãŒã«ã远跡ããå¿ èŠããªãããšãæå³ããŸãããããã£ãŒã«ã
äžèšã®è°è«ã«åºã¥ããšãããã®äººã ã®ã»ãšãã©ïŒãã¹ãŠïŒïŒã¯ãåé¡ïŒ11ããã®åé¡ã解決ããæ£ããæ¹æ³ã§ãããšä¿¡ããŠããããã§ãã å°æ¥ã®è°è«ãå ã®åé¡ïŒïŒ11ïŒã«ç§»ãããšãæ¯æããŠããã®åé¡ãéããããšã«åé¡ããã人ã¯ããŸããïŒ
æãåèã«ãªãã³ã¡ã³ã
äžèšã®è°è«ã«åºã¥ããšãããã®äººã ã®ã»ãšãã©ïŒãã¹ãŠïŒïŒã¯ãåé¡ïŒ11ããã®åé¡ã解決ããæ£ããæ¹æ³ã§ãããšä¿¡ããŠããããã§ãã å°æ¥ã®è°è«ãå ã®åé¡ïŒïŒ11ïŒã«ç§»ãããšãæ¯æããŠããã®åé¡ãéããããšã«åé¡ããã人ã¯ããŸããïŒ