socrates
socrates copied to clipboard
Potential death time parsing bug
I had this error once with philo_one:
DEATH TIMING
[2 MS] [3 MS] [2 MS] [2 MS] Traceback (most recent call last):
File "./socrates.py", line 281, in <module>
exit(socrates(args.path, args.philo))
File "./socrates.py", line 242, in socrates
test_program(f"{bin_path}/philo_one/philo_one")
File "./socrates.py", line 157, in test_program
if run_starvation_measures(binary) is False:
File "./socrates.py", line 131, in run_starvation_measures
measure_starvation_timing(binary, results)
File "./socrates.py", line 108, in measure_starvation_timing
death_time = int(last_line[:separator_index].strip("\0"))
ValueError: invalid literal for int() with base 10: 'dyld:'
When I run the test on my own I have the following output:
❯ ./philo_one 3 310 200 100 | cat -e
0 2 has taken fork$
0 2 has taken fork$
0 2 is eating$
2 3 has taken fork$
200 2 is sleeping$
200 3 has taken fork$
200 3 is eating$
200 1 has taken fork$
300 2 is thinking$
311 2 died$
I never had this error before.
Thanks for the report! I Your program clearly works, as you've shown in the example. It has also worked the first 4 times in the error output. But it looks to me as if it probably ended with an error of some kind, hence the dyld: part.
What we can possibly do from our side to mitigate that is to check if the program has returned gracefully before parsing the output, what do you think?
I think the non parsable output should be printed (or at least the few last lines) and have a clear message that it couldn't be parsed. Then continue the other tests.
That makes a lot of sense!