Rust 1.98.1 explained: 2026 vtable miscompile and null pointer
Official Rust blog on 3 September: 1.98.1 patches a 1.98.0 vtable miscompile. A null sat where a function pointer belongs. Public tracker: rust-lang/rust#161441.
On 3 September 2026 the Rust Release Team published point release 1.98.1 on the official Rust blog. The page names one fix: a miscompilation in vtable generation. Official upgrade text: rustup update stable.
The search term is the point-release number. The blog says: in Rust 1.98.0, in some circumstances, rustc put a null pointer where a function pointer belongs in a trait-object vtable. That is undefined behavior in the emitted code. This article only checks that blog and the public issue number. It is not a rustup handbook.
What the public notes print
| Item | What they wrote | Limit |
|---|---|---|
| Bug | A null where a function pointer should be in the vtable | Only in some circumstances |
| Effect | Undefined behavior in the emitted code | Sometimes “just” a segfault after the null load |
| Upgrade | rustup update stable | One official sentence, not a tutorial |
| Tracker | RELEASES.md points at rust-lang/rust#161441 | Not a language-feature drop |
How to read this release
- 1
This is a 1.98.0 patch
The official page puts the miscompile in its only feature section. Do not treat it as a re-ship of 1.98.0 language items, or as a package manager changing language.
- 2
The null sits where a function pointer belongs
Official sentence: in some circumstances, rustc would incorrectly generate a trait object vtable with a null pointer where a function pointer should be.
- 3
Undefined behavior is not only a crash
Official text: in some cases this may “just” cause segfaults due to the null pointer being loaded, but it is possible for it to be justification for arbitrary effects (as is typical for UB).
- 4
The public issue has a reproduce boundary
Issue 161441 is titled rustc emits a vacant vtable slot for a callable boxed async service. The report says the same Rama source worked on 1.97.1 and crashed on 1.98.0.
What else is public
Crash signs sit in the issue
The public report says macOS printed SIGSEGV with pc=0. The generated caller loaded a Service method from vtable + 0x18 and branched to zero.
1.98.0’s date is not on this patch page
RELEASES.md on rust-lang/rust dates 1.98.0 to 2026-08-20 and 1.98.1 to 2026-09-03. The patch page does not re-list 1.98.0 language items.
The team still asks for beta / nightly testers
The blog says: to help test future releases, consider rustup default beta or nightly locally and in CI, and report bugs.
Limits
The official page does not date 1.98.2. Next step is blog.rust-lang.org/2026/09/03/Rust-1.98.1/. If you only needed a short meeting without another account wall, wbstorm is a browser room ID — see also create or join a room and whiteboard basics.
# Sources
# blog.rust-lang.org/2026/09/03/Rust-1.98.1/
# github.com/rust-lang/rust/issues/161441
# 2026-09-03Is this a re-ship of 1.98.0 features?
No. This post is the vtable-miscompile point release. RELEASES.md dates 1.98.0 to 20 August.
Does it always segfault?
Official text: it may “just” segfault after the null load, but undefined behavior can also justify arbitrary effects.
Is this a product how-to?
No. This article only checks the 3 September Rust blog and the public issue. It is not a rustup handbook.