Recently my Undertow application is triggering Cloud Run to report the following:
Container Sandbox Limitation: Unsupported syscall setsockopt(0x13,0x1,0xa,0x3e05747fe5a0,0x4,0xfc1abc10). Please, refer to https://gvisor.dev/c/linux/amd64/setsockopt for more information.
I've done an strace and it seems that the socket option to enable Out-of-band Inlining (SO_OOBINLINE) is being sent by Undertow. I've explicitly told it not to do that in the configuration (two ways) but it's still happening. Using Undertow with Cloud Run seems like a reasonable use case but without more insight into what Out-of-band Inlining is for Undertow and why gVisor doesn't support this, I'm blocked on which program is being unreasonable. Is it Undertow for doing something that other webservers are not or is it gVisor being too immature to handle this particular socket function? Maybe gVisor will support it in the future and I just need to wait?
def main(args: Array[String]): Unit = {
val server = Undertow.builder
.addHttpListener("8080", "0.0.0.0")
.setHandler(defaultHandler)
.setSocketOption[java.lang.Boolean](XnioOptions.TCP_OOB_INLINE, false)
.setWorkerOption[java.lang.Boolean](XnioOptions.TCP_OOB_INLINE, false)
.build
server.start()
}