If you're using GCC to compile this, this exception is thrown because gcc requires the commandline argument -pthread to link any code that uses std::thread.
(specifically, it throws a system_error holding the error code generic:1 and the explanation string "Operation not permitted")
My list is here : https://github.com/manasij7479/minlisp/blob/master/list.h
and is_list just checks whether a string can be converted into a list...if it is, the passed list reference is filled with a list object.
And the exception is thrown when creating a new thread.
@Cubbi: Thanks, that was it...(along with a small bug in the loop itself).