Search code examples
systemtap

Systemtap (stap) probes fail with "this statement may fall through [-Werror=implicit-fallthrough=]"


After a kernel update from 5.2 to 5.3.5 my SystemTAP (stap) probes are failing with errors like

/usr/share/systemtap/runtime/map-gen.c: In function ‘hash_si’:
/usr/share/systemtap/runtime/map-gen.c:114:28: error: this statement may fall through [-Werror=implicit-fallthrough=]
  114 |                 case 3: k1 ^= tail[2] << 16; \
      |                         ~~~^~~~~~~~~~~~~~~~
/usr/share/systemtap/runtime/map-gen.c:131:19: note: in expansion of macro ‘MURMUR_STRING’
  131 | #define KEY1_HASH MURMUR_STRING(key1)
      |                   ^~~~~~~~~~~~~
/usr/share/systemtap/runtime/map-gen.c:664:9: note: in expansion of macro ‘KEY1_HASH’
  664 |         KEY1_HASH;
      |         ^~~~~~~~~
/usr/share/systemtap/runtime/map-gen.c:115:17: note: here
  115 |                 case 2: k1 ^= tail[1] << 8; \
      |                 ^~~~

Why?


Solution

  • Most likely this is due to -Werror=implicit-fallthru being enabled in the kernel build (which affects external modules as well) since the 5.3 kernel release: https://lwn.net/Articles/794944/ - in other words, the systemtap upstream needs to some work to properly support 5.3.

    Presumably the other -Wimplicit-fallthru fixes you linked were all for the userspace parts of systemtap which are compiled with different compiler settings (old kernel versions have most likely had -Wimplicit-fallthru disabled in the build).