Example failure:
http://chromeos-autotest.hot.corp.google.com/afe/#tab_id=view_job&object_id=7770
The client error logs:
08/04 15:16:49.131 INFO | job:0200| Writing results to /usr/local/autotest/results/default
08/04 15:16:49.134 CRITI| job:1212| JOB ERROR (autotest bug?): ("unhashable type: 'list'", <type 'set'>, ([site_sysinfo.logdir('/tmp/crash_reporter', None), site_sysinfo.logdir('/home/chronos/user/log', None), sysinfo.logfile('/home/chronos/.Google/Google Talk Plugin/gtbplugin.log', 'gtbplugin.log', False), site_sysinfo.logdir('/var/spool/crash', ['*.core']), sysinfo.command('dmesg -c', 'dmesg', False), sysinfo.command('df -mP', 'df', False), sysinfo.command('journalctl -o export', 'journal', False)],))
Traceback (most recent call last):
File "/usr/local/autotest/bin/job.py", line 1182, in runjob
myjob = job(control=control, drop_caches=drop_caches, options=options)
File "/usr/local/autotest/bin/job.py", line 1230, in __init__
base_client_job.__init__(self, *args, **kwargs)
File "/usr/local/autotest/bin/job.py", line 130, in __init__
self._pre_record_init(control, options)
File "/usr/local/autotest/bin/job.py", line 207, in _pre_record_init
self._load_state()
File "/usr/local/autotest/bin/job.py", line 869, in _load_state
self._state.set_backing_file(self._state_file)
File "/usr/local/autotest/common_lib/base_job.py", line 313, in set_backing_file
self._synchronize_backing_file()
File "/usr/local/autotest/common_lib/base_job.py", line 137, in wrapped_method
return method(self, *args, **dargs)
File "/usr/local/autotest/common_lib/base_job.py", line 158, in wrapped_method
self._read_from_backing_file()
File "/usr/local/autotest/common_lib/base_job.py", line 281, in _read_from_backing_file
self.read_from_file(self._backing_file, merge=merge_backing_file)
File "/usr/local/autotest/common_lib/base_job.py", line 228, in read_from_file
on_disk_state = pickle.load(open(file_path))
File "/usr/local/autotest/bin/site_sysinfo.py", line 52, in __hash__
return hash(self.dir) + hash(self.additional_exclude)
TypeError: ("unhashable type: 'list'", <type 'set'>, ([site_sysinfo.logdir('/tmp/crash_reporter', None), site_sysinfo.logdir('/home/chronos/user/log', None), sysinfo.logfile('/home/chronos/.Google/Google Talk Plugin/gtbplugin.log', 'gtbplugin.log', False), site_sysinfo.logdir('/var/spool/crash', ['*.core']), sysinfo.command('dmesg -c', 'dmesg', False), sysinfo.command('df -mP', 'df', False), sysinfo.command('journalctl -o export', 'journal', False)],))
The line "return hash(self.dir) + hash(self.additional_exclude)' is the one caused the failure. Either self.dir or self.additional_exclude is a dict.
Comment 1 by shuqianz@chromium.org
, Aug 4 2017