Open BurtonQin opened 3 years ago
Geth version: geth version OS & Version: Windows/Linux/OSX Commit hash : 56e9001a1a8ddecc478943170b00207ef46109b9
geth version
The channel sending/receiving/select operation shall not block forever whatever the order of the concurrent messages.
We found 13 blocking issues by fuzzing the code from
Entry point 1: https://github.com/ethereum/go-ethereum/blob/56e9001a1a8ddecc478943170b00207ef46109b9/miner/miner_test.go#L81
select
Entry point 2: https://github.com/ethereum/go-ethereum/blob/56e9001a1a8ddecc478943170b00207ef46109b9/miner/unconfirmed_test.go#L59
Entry point 3: https://github.com/ethereum/go-ethereum/blob/56e9001a1a8ddecc478943170b00207ef46109b9/miner/worker_test.go#L270
Entry point 4: https://github.com/ethereum/go-ethereum/blob/56e9001a1a8ddecc478943170b00207ef46109b9/accounts/abi/bind/backends/simulated_test.go#L160
Entry point 6: https://github.com/ethereum/go-ethereum/blob/56e9001a1a8ddecc478943170b00207ef46109b9/core/bloombits/matcher_test.go#L68
We found the blocking issues through a WIP Fuzzing project by system-pclub, PSU.
Hi there, kindly ask do we have any update on this PR?
System information
Geth version:
geth version
OS & Version: Windows/Linux/OSX Commit hash : 56e9001a1a8ddecc478943170b00207ef46109b9Expected behaviour
The channel sending/receiving/select operation shall not block forever whatever the order of the concurrent messages.
Actual behaviour
We found 13 blocking issues by fuzzing the code from
Entry point 1: https://github.com/ethereum/go-ethereum/blob/56e9001a1a8ddecc478943170b00207ef46109b9/miner/miner_test.go#L81
select
operation at https://github.com/ethereum/go-ethereum/blob/56e9001a1a8ddecc478943170b00207ef46109b9/miner/miner.go#L99-L100select
operation at https://github.com/ethereum/go-ethereum/blob/56e9001a1a8ddecc478943170b00207ef46109b9/miner/worker.go#L564-L565select
operation at https://github.com/ethereum/go-ethereum/blob/56e9001a1a8ddecc478943170b00207ef46109b9/miner/worker.go#L599-L600Entry point 2: https://github.com/ethereum/go-ethereum/blob/56e9001a1a8ddecc478943170b00207ef46109b9/miner/unconfirmed_test.go#L59
Entry point 3: https://github.com/ethereum/go-ethereum/blob/56e9001a1a8ddecc478943170b00207ef46109b9/miner/worker_test.go#L270
Entry point 4: https://github.com/ethereum/go-ethereum/blob/56e9001a1a8ddecc478943170b00207ef46109b9/accounts/abi/bind/backends/simulated_test.go#L160
Entry point 6: https://github.com/ethereum/go-ethereum/blob/56e9001a1a8ddecc478943170b00207ef46109b9/core/bloombits/matcher_test.go#L68
select
operation https://github.com/ethereum/go-ethereum/blob/56e9001a1a8ddecc478943170b00207ef46109b9/p2p/discover/v4_udp.go#L396-L402select
operation https://github.com/ethereum/go-ethereum/blob/56e9001a1a8ddecc478943170b00207ef46109b9/p2p/message.go#L190-L193Steps to reproduce the behaviour
We found the blocking issues through a WIP Fuzzing project by system-pclub, PSU.
Backtrace