Feature #19850
closedGet thread creation time
Description
I was debugging some threads hanging issue and thought it would be nice to know how long a thread has been around for. Would there be interest in a Thread#creation_time
(or some other name) that returns the time when the thread was created?
Updated by jeremyevans0 (Jeremy Evans) 10 months ago
- Tracker changed from Bug to Feature
- Backport deleted (
3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN)
Updated by mame (Yusuke Endoh) 10 months ago
- Status changed from Open to Feedback
It is unclear what you expect from Thread#creation_time
. Could you please explain your use case in more detail and how it is useful for the case?
Updated by ngan (Ngan Pham) 10 months ago
In the process of debugging a stuck process on production (Sidekiq), we've been dumping all the threads' backtraces. We can see a thread that's sleeping at net/http.rb
. (I've filed an issue here: https://github.com/ruby/net-http/issues/149)
But I was just thinking it would be nice to know, in general, how long a thread has been running to get a better sense if this thread has been stuck for a while or not.
Updated by nobu (Nobuyoshi Nakada) 10 months ago
- Status changed from Feedback to Open
Updated by naruse (Yui NARUSE) 10 months ago
To investigate when you want to investigate what causes a program hang...
pid2line¶
https://gist.github.com/nurse/0619b6af90df140508c2
It shows what threads are running or sleeping and where it is as C function name.
In your case, it will show _connect.
rbspy¶
When it is running in infinite loop, rbspy will help where it is.
https://rbspy.github.io/
Updated by mame (Yusuke Endoh) 10 months ago
- Status changed from Open to Rejected
We discussed this at the dev meeting, and decided not to implement it.
Considering frameworks that implement a thread pool, the time when a Thread object is created is not necessarily useful, but could be rather confusing. It would be better for users or frameworks to record their own time at the start of a process.