forked from ROMEO/nexosim
Force the waker VTable to be uniquely instantiated
From Rust 1.78, `Waker::will_wake` tests equality by comparing the VTable pointers rather than the content of the VTable. Unfortunately, this exposes some instability in the code generation which sometimes causes several VTables to be instantiated in memory for the same generic parameters. This can in turn defeat `Waker::will_wake` if e.g. `Waker::clone` and `Waker::wake_by_*` end up with different pointers. The problemt is hopefully addressed by preventing inlining of the VTable generation function. A test has been added to try to detect regression, though the test may not be 100% reliable.
This commit is contained in:
6
.github/workflows/loom.yml
vendored
6
.github/workflows/loom.yml
vendored
@ -10,8 +10,10 @@ on:
|
||||
- 'asynchronix/src/executor/task.rs'
|
||||
- 'asynchronix/src/executor/task/**'
|
||||
- 'asynchronix/src/loom_exports.rs'
|
||||
- 'asynchronix/src/model/ports/broadcaster.rs'
|
||||
- 'asynchronix/src/model/ports/broadcaster/**'
|
||||
- 'asynchronix/src/ports/output/broadcaster.rs'
|
||||
- 'asynchronix/src/ports/output/broadcaster/**'
|
||||
- 'asynchronix/src/ports/source/broadcaster.rs'
|
||||
- 'asynchronix/src/ports/source/broadcaster/**'
|
||||
- 'asynchronix/src/util/slot.rs'
|
||||
- 'asynchronix/src/util/sync_cell.rs'
|
||||
|
||||
|
Reference in New Issue
Block a user