cc: Work around verifier error when reading USDT probe arguments
The code generated by the USDT helpers for reading probe arguments occasionally caused a verifier error due to a construct similar to the following: ``` switch (ctx->ip) { case 0xaaaa: *dest = ctx->cx; break; case 0xbbbb: *dest = ctx->dx; break; } ``` This would generate an instruction sequence that attempts to access ctx through an offset that is not statically known, which confuses the verifier. This was reported in #751, #829, and #1133, and likely seen by others as well. The workaround, suggested by @yonghong-song, is to force memory writes by using the volatile modifier, which precludes this specific optimization. Resolves #751, #829, #1133.
Showing
Please register or sign in to comment