Project

General

Profile

Actions

Feature #19850

closed

Get thread creation time

Added by ngan (Ngan Pham) 8 months ago. Updated 8 months ago.

Status:
Rejected
Assignee:
-
Target version:
-
[ruby-core:114517]

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?

Actions #1

Updated by jeremyevans0 (Jeremy Evans) 8 months ago

  • Tracker changed from Bug to Feature
  • Backport deleted (3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN)

Updated by mame (Yusuke Endoh) 8 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) 8 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.

Actions #4

Updated by nobu (Nobuyoshi Nakada) 8 months ago

  • Status changed from Feedback to Open

Updated by naruse (Yui NARUSE) 8 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) 8 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.

Actions

Also available in: Atom PDF

Like1
Like0Like0Like0Like0Like0Like0