[tor-bugs] #27938 [Core Tor/Nyx]: SQLite permission error writing to cache
Tor Bug Tracker & Wiki
blackhole at torproject.org
Tue Oct 2 23:43:45 UTC 2018
#27938: SQLite permission error writing to cache
------------------------------+--------------------
Reporter: atagar | Owner: atagar
Type: defect | Status: new
Priority: High | Milestone:
Component: Core Tor/Nyx | Version:
Severity: Normal | Keywords:
Actual Points: | Parent ID:
Points: | Reviewer:
Sponsor: |
------------------------------+--------------------
I've had a couple users report nyx permission errors. Most likely this
comes up when changing the user they run nyx as.
**Users should be able to work around this with the following...**
{{{
% echo "data_directory disabled" >> my_nyxrc
% nyx --config my_nyxrc
}}}
Stacktrace users report are the following...
{{{
Traceback (most recent call last):
File "/usr/bin/nyx", line 11, in <module>
load_entry_point('nyx==2.0.4', 'console_scripts', 'nyx')()
File "/usr/lib/python3/dist-packages/nyx/__init__.py", line 176, in main
nyx.starter.main()
File "/usr/lib/python3/dist-packages/stem/util/conf.py", line 289, in
wrapped
return func(*args, config = config, **kwargs)
File "/usr/lib/python3/dist-packages/nyx/starter.py", line 118, in main
nyx.curses.start(nyx.draw_loop, acs_support =
config.get('acs_support', True), transparent_background = True, cursor =
False)
File "/usr/lib/python3/dist-packages/nyx/curses.py", line 217, in start
curses.wrapper(_wrapper)
File "/usr/lib/python3.6/curses/__init__.py", line 94, in wrapper
return func(stdscr, *args, **kwds)
File "/usr/lib/python3/dist-packages/nyx/curses.py", line 215, in
_wrapper
function()
File "/usr/lib/python3/dist-packages/nyx/__init__.py", line 194, in
draw_loop
interface = nyx_interface()
File "/usr/lib/python3/dist-packages/nyx/__init__.py", line 256, in
nyx_interface
Interface() # constructor sets NYX_INTERFACE
File "/usr/lib/python3/dist-packages/nyx/__init__.py", line 589, in
__init__
self._header_panel = nyx.panel.header.HeaderPanel()
File "/usr/lib/python3/dist-packages/nyx/panel/header.py", line 47, in
__init__
self._vals = Sampling.create()
File "/usr/lib/python3/dist-packages/nyx/panel/header.py", line 235, in
create
my_router_status_entry =
nyx.tracker.get_consensus_tracker().my_router_status_entry()
File "/usr/lib/python3/dist-packages/nyx/tracker.py", line 169, in
get_consensus_tracker
CONSENSUS_TRACKER = ConsensusTracker()
File "/usr/lib/python3/dist-packages/nyx/tracker.py", line 831, in
__init__
self._update(ns_response)
File "/usr/lib/python3/dist-packages/nyx/tracker.py", line 853, in
_update
writer.record_relay(fingerprint, address, or_port, nickname)
File "/usr/lib/python3/dist-packages/nyx/__init__.py", line 569, in
record_relay
self._cache._query('INSERT OR REPLACE INTO relays(fingerprint,
address, or_port, nickname) VALUES (?,?,?,?)', fingerprint, address,
or_port, nickname)
File "/usr/lib/python3/dist-packages/nyx/__init__.py", line 541, in
_query
return self._conn.execute(query, param)
sqlite3.OperationalError: attempt to write a readonly database
}}}
The cache is only for a performance improvement so when we lack cache
write access nyx should emit a warning and simply avoid these calls.
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/27938>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
More information about the tor-bugs
mailing list