drop rb_safe_level() from ruby-curses to fix irqtop from missing symbols and deprecation warnings
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ruby-curses (Debian) |
Fix Released
|
Unknown
|
|||
ruby-curses (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Focal |
Fix Released
|
Medium
|
Matthew Ruffell | ||
Jammy |
Fix Released
|
Medium
|
Matthew Ruffell |
Bug Description
[Impact]
rb_safe_level() had been marked for deprecation for some time, and was finally removed in Ruby 3.0.
ruby-curses uses rb_safe_level(), and it causes issues with its rdepends, most notably irqtop.
irqtop is unusuable on Jammy, with it failing to start due to not finding the rb_safe_level symbol.
$ sudo irqtop
<internal:
from <internal:
from /usr/lib/
from /usr/lib/
from <internal:
from <internal:
from /usr/bin/
On Focal, irqtop fills the screen with deprecation warnings making the tool unusable.
/usr/bin/
[Testcase]
$ sudo apt install irqtop
$ sudo irqtop
On Jammy:
Check to see if the tool launches, and you no longer get the "undefined symbol: rb_safe_level - /usr/lib/
on Focal:
Launch the tool, press enter several times to refresh the results. There should be no mention of "/usr/bin/
Test packages are available in the following ppa:
https:/
If you install the test packages, irqtop will function normally.
[Where Problems Could Occur]
We are removing a long deprecated string safety check, which I assure you, does not change the security of the tools using the ruby-curses library, due to most levels being disabled already in ruby itself.
As for the effect on the programs that depend on ruby-curses, ruby-curses only has 2 redepends, one of which is irqtop:
$ apt rdepends ruby-curses
ruby-curses
Reverse Depends:
Depends: irqtop
Depends: ruby-blade
If a regression were to occur, it would only impact irqtop and ruby-blade users. Users could downgrade ruby-curses while a fix is developed.
[Other Info]
This was fixed in the below commit, in version 1.3.2:
commit a9b9db9b5d5a4b5
From: Eric Wong <email address hidden>
Date: Sat, 30 Nov 2019 01:45:21 +0000
Subject: drop rb_safe_level check
Link: https:/
Both Focal and Jammy required a backport. Only window and mouse events are implemented in 1.2.4, so I removed the hunks that targeted events that were implemented later.
Changed in ruby-curses (Debian): | |
status: | Unknown → Confirmed |
Changed in ruby-curses (Debian): | |
status: | Confirmed → Fix Released |
no longer affects: | iptables-netflow (Ubuntu) |
Changed in ruby-curses (Ubuntu): | |
status: | New → In Progress |
importance: | Undecided → Medium |
assignee: | nobody → Matthew Ruffell (mruffell) |
tags: | added: focal jammy sts |
Changed in ruby-curses (Ubuntu): | |
status: | In Progress → Fix Released |
importance: | Medium → Undecided |
assignee: | Matthew Ruffell (mruffell) → nobody |
Changed in ruby-curses (Ubuntu Focal): | |
status: | New → In Progress |
Changed in ruby-curses (Ubuntu Jammy): | |
status: | New → In Progress |
Changed in ruby-curses (Ubuntu Focal): | |
importance: | Undecided → Medium |
Changed in ruby-curses (Ubuntu Jammy): | |
importance: | Undecided → Medium |
Changed in ruby-curses (Ubuntu Focal): | |
assignee: | nobody → Matthew Ruffell (mruffell) |
Changed in ruby-curses (Ubuntu Jammy): | |
assignee: | nobody → Matthew Ruffell (mruffell) |
This is an issue in ruby-curses, not irqtop. See https:/ /bugs.debian. org/cgi- bin/bugreport. cgi?bug= 958973
Interestingly this no more happens on Debian Unstable/Testing. This seems to have fixed upstream a few months ago:
commit df3f52a6331f1a4 7af9933b77311a8 650727d8d1
Author: nagachika <email address hidden>
Date: 2020-09-29 22:43:25 +0900
merge revision(s) 996af2ce086249e 904b2ce95ab2fcd 1de7d757be: [Backport #16345] [Backport #17000]
Disable deprecation warning by the default [Feature #16345]
And `-w` option turns it on.
That commit likely made it into ruby 2.7.2, which hit Debian Unstable in mid-October 2020.
Nevertheless this obviously needs to be fixed in ruby-curses.