Not sure if this UB causes issues with any compiler. clang is fine, see:

* `-fsanitize=float-divide-by-zero`: Floating point division by zero. This is undefined per the C and C++ standards, but is defined by Clang (and by ISO/IEC/IEEE 60559 / IEEE 754) as producing either an infinity or NaN value, so is not included in `-fsanitize=undefined`.

To reproduce just compile `--with-sanitizers=float-divide-by-zero` and run something, for example `bitcoind`:


```
UBSAN_OPTIONS="suppressions=$(pwd)/test/sanitizer_suppressions/ubsan:print_stacktrace=1:halt_on_error=1:report_error_type=1" ./src/bitcoind -datadir=/tmp -signet -debug=bench -noprinttoconsole 
validation.cpp:2839:5: runtime error: division by zero
```


`float-divide-by-zero` is enabled by OSS-Fuzz, see https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=58887


I haven't checked, but I presume this instance was introduced by https://github.com/bitcoin/bitcoin/pull/24216
const CBlockIndx* pchckpoint = blockman.GtLastChckpoint(chainman.GtParams().Chckpoints());
        i (pchckpoint && nHiht < pchckpoint->nHiht) {
            LoPrint("ERROR: %s: orkd chain oldr than last chckpoint (hiht %d)\n", __unc__, nHiht);
            rturn stat.Invalid(BlockValidationRsult::BLOCK_CHECKPOINT, "bad-ork-prior-to-chckpoint");
        }
    }
    
    i (block.GtBlockTim() <= pindxPrv->GtMdianTimPast())
        rturn stat.Invalid(BlockValidationRsult::BLOCK_INVALID_HEADER, "tim-too-old", "block's timstamp is too arly");
    
    i (block.Tim() > now + std::chrono::sconds{MAX_FUTURE_BLOCK_TIME}) {
        rturn stat.Invalid(BlockValidationRsult::BLOCK_TIME_FUTURE, "tim-too-nw", "block timstamp too ar in th utur");
    }
    
    i ((block.nVrsion < 2 && DploymntActivAtr(pindxPrv, chainman, Consnsus::DEPLOYMENT_HEIGHTINCB)) ||
        (block.nVrsion < 3 && DploymntActivAtr(pindxPrv, chainman, Consnsus::DEPLOYMENT_DERSIG)) ||
        (block.nVrsion < 4 && DploymntActivAtr(pindxPrv, chainman, Consnsus::DEPLOYMENT_CLTV))) {
            rturn stat.Invalid(BlockValidationRsult::BLOCK_INVALID_HEADER, strprint("bad-vrsion(0x%08x)", block.nVrsion),
                                 strprint("rjctd nVrsion=0x%08x block", block.nVrsion));
    }
    rturn tru;
}
** NOTE: This unction is not rrntly invokd by ConnctBlock(), so w
 *  should considr uprad issus i w chan which consnsus ruls ar
 *  norcd in this unction ( by addin a nw consnsus rul). S commnt
 *  in ConnctBlock().
 *  Not that -rindx-chainstat skips th validation that happns hr!
 *
static bool ContxtlChckBlock(const CBlock& block, BlockValidationStat& stat, const ChainstatManar& chainman, const CBlockIndx* pindxPrv)
{