Evgeniy Moiseenko

Results 51 issues of Evgeniy Moiseenko

This PR implements a refactoring to introduce separate internal event trackers API: - `MonitorTracker` tracks monitor events (lock, unlock, wait, notify) - `ParkingTracker` tracks parking events (park, unpark) - `ObjectTracker`...

Events from coroutine resumptions were not printed before. Moreover, the "stack trace recovery after resumption" logic seem to be broken too. This PR fixes these problems. See the output of...

We need to improve atomic sections model, and possibly introduce another new kind of "silent" sections. This should help us shorten the trace output by hiding internal details of stdlib...

general-purpose mc

`System.arraycopy(...)` call is not considered as modification by static memory snapshot tracker, so overridden values will not be remembered. This call is used in `ArrayList::remove(...)` for example. It also prevent...

general-purpose mc

The trace can contain several consecutive thread switches to the blocks of the same spin-loop. Example: ``` | /* The following events repeat infinitely: */ | | ┌╶> state ➜...

general-purpose mc

Due to some bug, spin loops can be represented incorrectly: spin-loop arrow and spin-loop nestedness is broken. Example: ``` | BlockingEventLoop#1.processNextEvent(): 9223372036854775807 at BlockingCoroutine.joinBlocking(Builders.kt:85) | | | | | isCompleted():...

general-purpose mc

Currently, the for `` methods Lincheck applies different set of bytecode transformers, compared to regular methods. This often leads to bugs. We need to revisit this logic, and unify the...

refactoring
general-purpose mc

As an optimization, we currently use lazy instrumentation logic to re-transform only those classes related to the test. This lazy instrumentation mechanism utilizes the fact that managed strategy can intercept...

refactoring
general-purpose mc

Currently, hidden classes cannot be instrumented by Lincheck, because we use dynamic agent attachment and class re-transformation. However, hidden classes are not modifiable and thus cannot be redefined or re-transformed:...

general-purpose mc

We observe a performance degradation somewhere after `Lincheck-2.36` release.