14. A non-transitory computer-readable storage medium storing instructions thereon that, when executed by a hardware processor, cause a computer system to perform a plurality of operations comprising: formulating detection of a concurrency bug of different threads of a multithreaded software program (“program”) as a constraint-solving problem by: assigning an order variable to each of a plurality of data events in an input trace of the program, as executed on the hardware processor, as concurrency constraints; assigning a branch variable to each of a plurality of branch events of the input trace of the program as control flow constraints; ordering the order variables in an order of execution according to a maximal causal model, which captures a set of feasible traces that can be generated by a thread of a multithreaded program capable of generating the input trace and by a second input trace, wherein the input trace and the second input trace are thread-local traces; defining the maximal causal model with multiple axioms comprising prefix closedness and local determinism, wherein prefix closedness is that prefixes of a feasible trace are also feasible, and local determinism is that threads of the program behave deterministically; further defining local determinism to include: data-abstract equivalence of the input trace and the second input trace of the program, where the input trace and the second input trace are equal except for data values in read events and write events of the plurality of events; and a branch axiom, in relation to a first branch event of the plurality of events and using the data-abstract equivalence, comprising when read events in the input trace for the thread equal the read events in the second input trace for the thread, the first branch event in the second input trace is feasible; and generating a formula over the order and branch variables that captures the maximal causal model, control dependency from the control flow, and a trace property whose violation corresponds to the concurrency bug; and solving, using the hardware processor, the formula with a constraint solver to determine whether the property is violated due to the concurrency bug, wherein employment of thread-local traces enables concurrency bug detection in multiple of the different threads in parallel, reducing runtime computation overhead of the hardware processor by at least ten percent.
14. A non-transitory computer-readable storage medium storing instructions thereon that, when executed by a hardware processor, cause a computer system to perform a plurality of operations comprising: formulating detection of a concurrency bug of different threads of a multithreaded software program (“program”) as a constraint-solving problem by: assigning an order variable to each of a plurality of data events in an input trace of the program, as executed on the hardware processor, as concurrency constraints; assigning a branch variable to each of a plurality of branch events of the input trace of the program as control flow constraints; ordering the order variables in an order of execution according to a maximal causal model, which captures a set of feasible traces that can be generated by a thread of a multithreaded program capable of generating the input trace and by a second input trace, wherein the input trace and the second input trace are thread-local traces; defining the maximal causal model with multiple axioms comprising prefix closedness and local determinism, wherein prefix closedness is that prefixes of a feasible trace are also feasible, and local determinism is that threads of the program behave deterministically; further defining local determinism to include: data-abstract equivalence of the input trace and the second input trace of the program, where the input trace and the second input trace are equal except for data values in read events and write events of the plurality of events; and a branch axiom, in relation to a first branch event of the plurality of events and using the data-abstract equivalence, comprising when read events in the input trace for the thread equal the read events in the second input trace for the thread, the first branch event in the second input trace is feasible; and generating a formula over the order and branch variables that captures the maximal causal model, control dependency from the control flow, and a trace property whose violation corresponds to the concurrency bug; and solving, using the hardware processor, the formula with a constraint solver to determine whether the property is violated due to the concurrency bug, wherein employment of thread-local traces enables concurrency bug detection in multiple of the different threads in parallel, reducing runtime computation overhead of the hardware processor by at least ten percent. 16. The non-transitory computer-readable storage medium of claim 14 , wherein the concurrency bug comprises a data race, and wherein the trace property comprises a conflicting operation pair of events from different threads being executed in succession.