{"action":"closed","issue":{"url":"https://api.github.com/repos/jupyter/jupyterhub/issues/155","labels_url":"https://api.github.com/repos/jupyter/jupyterhub/issues/155/labels{/name}","comments_url":"https://api.github.com/repos/jupyter/jupyterhub/issues/155/comments","events_url":"https://api.github.com/repos/jupyter/jupyterhub/issues/155/events","html_url":"https://github.com/jupyter/jupyterhub/issues/155","id":59106782,"number":155,"title":"Sudospawner failing","user":{"login":"tantczak","id":11215767,"avatar_url":"https://avatars.githubusercontent.com/u/11215767?v=3","gravatar_id":"","url":"https://api.github.com/users/tantczak","html_url":"https://github.com/tantczak","followers_url":"https://api.github.com/users/tantczak/followers","following_url":"https://api.github.com/users/tantczak/following{/other_user}","gists_url":"https://api.github.com/users/tantczak/gists{/gist_id}","starred_url":"https://api.github.com/users/tantczak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tantczak/subscriptions","organizations_url":"https://api.github.com/users/tantczak/orgs","repos_url":"https://api.github.com/users/tantczak/repos","events_url":"https://api.github.com/users/tantczak/events{/privacy}","received_events_url":"https://api.github.com/users/tantczak/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":5,"created_at":"2015-02-26T17:23:08Z","updated_at":"2015-02-27T16:12:48Z","closed_at":"2015-02-27T16:12:48Z","body":"Hi,\r\n\r\nSo I've read through the issues and seen stuff similar to what I'm seeing, but not exactly the same.  When I run Jupyterhub without sudospawner, as root, it works fine. When I run it with sudospawner, EVEN AS ROOT, it fails.  Here's my command line and the stack trace of the failure:\r\n\r\n```\r\n[root@research01 jupyter]# jupyterhub --config=/usr/local/lib/python3.4/site-packages/jupyterhub/jupyterhub_config.py \r\n[I 2015-02-26 17:12:52.828 JupyterHub app:453] Loading cookie_secret from /etc/jupyter/jupyterhub_cookie_secret\r\n[W 2015-02-26 17:12:52.860 JupyterHub app:240] \r\n    Generating CONFIGPROXY_AUTH_TOKEN. Restarting the Hub will require restarting the proxy.\r\n    Set CONFIGPROXY_AUTH_TOKEN env or JupyterHub.proxy_auth_token config to avoid this message.\r\n    \r\n[I 2015-02-26 17:12:52.868 JupyterHub app:546] Not using whitelist. Any authenticated user will be allowed.\r\n[I 2015-02-26 17:12:52.882 JupyterHub app:678] Starting proxy @ http://*:8000/\r\n17:12:53.024 - info: [ConfigProxy] Proxying http://*:8000 to http://localhost:8081\r\n17:12:53.028 - info: [ConfigProxy] Proxy API at http://localhost:8001/api/routes\r\nsudo: sudospawner: command not found\r\n[E 2015-02-26 17:13:08.772 JupyterHub orm:353] Unhandled error starting tantczak's server: Expecting value: line 1 column 1 (char 0)\r\n[E 2015-02-26 17:13:08.776 JupyterHub web:1421] Uncaught exception GET /hub/user/tantczak/ (10.1.22.130)\r\n    HTTPServerRequest(protocol='http', host='research01:8000', method='GET', uri='/hub/user/tantczak/', version='HTTP/1.1', remote_ip='10.1.22.130', headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:35.0) Gecko/20100101 Firefox/35.0', 'Accept-Language': 'en-US,en;q=0.5', 'X-Forwarded-For': '10.1.22.130', 'Referer': 'http://research01:8000/hub/home', 'Accept-Encoding': 'gzip, deflate', 'X-Forwarded-Proto': 'http', 'Host': 'research01:8000', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Cookie': 'jupyter-hub-token=\"2|1:0|10:1424447096|17:jupyter-hub-token|44:NjRjNmQzYTA3MjAxNGI1YzllMzllYzIyNDc4OWFkMjQ=|7a6926c8c9e555ddf12c41dc1541e518594e55aa51d37c1d2cc9d26a5c951927\"', 'Connection': 'close', 'X-Forwarded-Port': '8000'})\r\n    Traceback (most recent call last):\r\n      File \"/usr/local/lib/python3.4/site-packages/tornado/web.py\", line 1348, in _execute\r\n        result = yield result\r\n      File \"/usr/local/lib/python3.4/site-packages/tornado/gen.py\", line 807, in run\r\n        value = future.result()\r\n      File \"/usr/local/lib/python3.4/site-packages/tornado/concurrent.py\", line 209, in result\r\n        raise_exc_info(self._exc_info)\r\n      File \"<string>\", line 3, in raise_exc_info\r\n      File \"/usr/local/lib/python3.4/site-packages/tornado/gen.py\", line 810, in run\r\n        yielded = self.gen.throw(*sys.exc_info())\r\n      File \"/usr/local/lib/python3.4/site-packages/jupyterhub/handlers/base.py\", line 373, in get\r\n        yield self.spawn_single_user(current_user)\r\n      File \"/usr/local/lib/python3.4/site-packages/tornado/gen.py\", line 807, in run\r\n        value = future.result()\r\n      File \"/usr/local/lib/python3.4/site-packages/tornado/concurrent.py\", line 209, in result\r\n        raise_exc_info(self._exc_info)\r\n      File \"<string>\", line 3, in raise_exc_info\r\n      File \"/usr/local/lib/python3.4/site-packages/tornado/gen.py\", line 810, in run\r\n        yielded = self.gen.throw(*sys.exc_info())\r\n      File \"/usr/local/lib/python3.4/site-packages/jupyterhub/handlers/base.py\", line 214, in spawn_single_user\r\n        yield gen.with_timeout(timedelta(seconds=self.slow_spawn_timeout), f)\r\n      File \"/usr/local/lib/python3.4/site-packages/tornado/gen.py\", line 807, in run\r\n        value = future.result()\r\n      File \"/usr/local/lib/python3.4/site-packages/tornado/concurrent.py\", line 209, in result\r\n        raise_exc_info(self._exc_info)\r\n      File \"<string>\", line 3, in raise_exc_info\r\n      File \"/usr/local/lib/python3.4/site-packages/tornado/gen.py\", line 812, in run\r\n        yielded = self.gen.send(value)\r\n      File \"/usr/local/lib/python3.4/site-packages/jupyterhub/orm.py\", line 362, in spawn\r\n        raise e\r\n      File \"/usr/local/lib/python3.4/site-packages/jupyterhub/orm.py\", line 345, in spawn\r\n        yield gen.with_timeout(timedelta(seconds=spawner.start_timeout), f)\r\n      File \"/usr/local/lib/python3.4/site-packages/tornado/gen.py\", line 807, in run\r\n        value = future.result()\r\n      File \"/usr/local/lib/python3.4/site-packages/tornado/concurrent.py\", line 209, in result\r\n        raise_exc_info(self._exc_info)\r\n      File \"<string>\", line 3, in raise_exc_info\r\n      File \"/usr/local/lib/python3.4/site-packages/tornado/gen.py\", line 810, in run\r\n        yielded = self.gen.throw(*sys.exc_info())\r\n      File \"/usr/local/lib/python3.4/site-packages/sudospawner/spawner.py\", line 52, in start\r\n        reply = yield self.do(action='spawn', args=self.get_args(), env=self.env)\r\n      File \"/usr/local/lib/python3.4/site-packages/tornado/gen.py\", line 807, in run\r\n        value = future.result()\r\n      File \"/usr/local/lib/python3.4/site-packages/tornado/concurrent.py\", line 209, in result\r\n        raise_exc_info(self._exc_info)\r\n      File \"<string>\", line 3, in raise_exc_info\r\n      File \"/usr/local/lib/python3.4/site-packages/tornado/gen.py\", line 812, in run\r\n        yielded = self.gen.send(value)\r\n      File \"/usr/local/lib/python3.4/site-packages/sudospawner/spawner.py\", line 46, in do\r\n        return json.loads(data.decode('utf8'))\r\n      File \"/usr/local/lib/python3.4/json/__init__.py\", line 318, in loads\r\n        return _default_decoder.decode(s)\r\n      File \"/usr/local/lib/python3.4/json/decoder.py\", line 343, in decode\r\n        obj, end = self.raw_decode(s, idx=_w(s, 0).end())\r\n      File \"/usr/local/lib/python3.4/json/decoder.py\", line 361, in raw_decode\r\n        raise ValueError(errmsg(\"Expecting value\", s, err.value)) from None\r\n    ValueError: Expecting value: line 1 column 1 (char 0)\r\n[E 2015-02-26 17:13:08.836 JupyterHub web:1825] 500 GET /hub/user/tantczak/ (10.1.22.130) 99.55ms\r\n[I 2015-02-26 17:13:09.401 JupyterHub web:1825] 304 GET /hub/static/components/requirejs/require.js?v=4805364156371be297aa5ab7f8b204cb (10.1.22.130) 8.30ms\r\n[I 2015-02-26 17:13:09.403 JupyterHub web:1825] 200 GET /hub/static/css/style.min.css?v=2537bbc7ee84eeba39e7e3f855f9b1df (10.1.22.130) 1.16ms\r\n[I 2015-02-26 17:13:09.766 JupyterHub web:1825] 304 GET /hub/static/images/jupyterhub-80.png?v=f2425886998fa90d2abfe69770803e7c (10.1.22.130) 0.74ms\r\n[I 2015-02-26 17:13:10.234 JupyterHub web:1825] 200 GET /favicon.ico (10.1.22.130) 0.86ms\r\n^C\r\nInterrupted\r\n[I 2015-02-26 17:17:37.212 JupyterHub app:800] Cleaning up single-user servers...\r\n[I 2015-02-26 17:17:37.217 JupyterHub app:829] ...done\r\n```\r\n\r\nAS you can see, rather than explicitly calling out sudospawner on the jupyterhib command line, I'm using a config file.  Here's the relevant line from that:\r\n\r\nc.JupyterHub.spawner_class = 'sudospawner.SudoSpawner'\r\n\r\nAny idea what's going on here?"}}