Commit c9e7bfa
committed
grt: erase destroyed net from dirty set in CUGR path
GlobalRouter::removeNet only erased the net from dirty_nets_ in the
FastRoute (non-CUGR) branch. When use_cugr_ is true, a net destroyed
during incremental routing stayed in dirty_nets_, so updateDirtyRoutes
later passed the dangling dbNet to CUGR::updateNet, which dereferenced
it via Design::updateNet (db_net->getSigType()).
In release builds (NDEBUG) this use-after-free is silent, so
grt.incremental_deleted_net.tcl passed. With assertions enabled
(coverage / RELEASEWITHASSERTS builds) the stale sig type tripped
dbSigType::isSupply()'s assert(false) and aborted.
Move the dirty_nets_.erase to run for both routers.
Signed-off-by: Matt Liberty <mliberty@precisioninno.com>1 parent 681f0d5 commit c9e7bfa
1 file changed
Lines changed: 4 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4799 | 4799 | | |
4800 | 4800 | | |
4801 | 4801 | | |
| 4802 | + | |
| 4803 | + | |
| 4804 | + | |
| 4805 | + | |
4802 | 4806 | | |
4803 | 4807 | | |
4804 | 4808 | | |
| |||
4858 | 4862 | | |
4859 | 4863 | | |
4860 | 4864 | | |
4861 | | - | |
4862 | 4865 | | |
4863 | 4866 | | |
4864 | 4867 | | |
| |||
0 commit comments