[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