Comments (4)
I see what's going on there. The time.AfterFunc()
could be an interrupt handler, for example, which might race if the user hits Ctrl+C at or near the configured pinger.Timeout
.
I wonder whether pinger.Stop()
could be made to return an error in cases when it is called more than once and/or whether this is actually useful to anyone?
from ping.
It looks like #83 by @voidint already fixes this issue with a sync.Once
from ping.
Unable to reproduce, I'm afraid. If you can provide a concrete example that fails when using the latest commit on master
then we can reopen.
from ping.
The issue is that the internal timeout and packet counting mechanisms close the p.done
channel, which Stop()
also closes. You can reproduce with a contrived example like:
https://gist.github.com/ks07/4f9a57af233027b194801323017b0141
2020/10/17 17:33:45 24 bytes from 8.8.8.8: icmp_seq=0 time=31.0067ms
panic: close of closed channel
goroutine 9 [running]:
github.com/go-ping/ping.(*Pinger).Stop(...)
C:/Users/George/go/pkg/mod/github.com/go-ping/[email protected]/ping.go:381
main.main.func2()
C:/Users/George/go/src/pingerExample/main.go:30 +0x5d
created by time.goFunc
C:/Programs/Go/src/time/sleep.go:167 +0x4b
Process finished with exit code 2
In a real world use case the time.AfterFunc()
call would be some other cancellation method handled in a separate goroutine.
from ping.
Related Issues (20)
- ping result is always same for different addresses HOT 2
- Event for detecting when a ping request times out HOT 1
- Pings not being returned after a certain number of IP addresses HOT 1
- Randomly running into issue while continously pinging 1.1.1.1 HOT 2
- logger.Fatal() causes entire app to exit HOT 5
- If the host is down ping blocks until the timeout is reached
- bind: cannot assign requested address HOT 2
- cannot find package HOT 2
- ping multiple hosts HOT 1
- 有时候莫名其妙的卡住 HOT 2
- In "mac", the call "pinger.Run()" struck for ever
- How to get network interface used to make the ping? HOT 3
- Some packet loss causes ping to hang forever HOT 3
- Is this project abandoned? HOT 3
- not support ipv6? HOT 1
- Decrease the number of digits after the decimal point HOT 1
- connection times out HOT 1
- What does it mean to ping over "udp"? HOT 1
- Mahsa1382
- Mahsa
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ping.