-
Notifications
You must be signed in to change notification settings - Fork 52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Execution of TTT results in ConflictException on deterministic models #126
Comments
Dear @emuskardin, thanks for the report. I can reproduce the error on the current development version and it seems to be related to the DAG cache implementation (which had similar issues in the past). If you don't care about memory consumption, you may use |
Thank you @mtf90 :) I don't know if this is useful information, but it seems that if you change cex. processing to BINARY_SEARCH_FWD at least for these 2 failing seeds it works (and for the other 1000 random models). However, it might simply be due to different learning processes, if BINARY_SEARCH_FWD and BINARY_SEARCH_BWD do not necessarily return the same splitting point. I just tested FWD on 1000 random automata and no crashes, while 1000 tests were enough to find these 2 failing seeds for BWD. |
I think this mainly depends on the order in which words are inserted into the cache since the DAG cache tries to merge dangling ends that do not conflict. It appears that TTT + BINARY_SEARCH_BWD hits that sweet spot which performs an illegal merge that later causes conflicts. |
Closing in favor of LearnLib/automatalib#79. This is actually a very good catch because it requires a specific structure and order of traces to trigger the issue. I should have a fix ready fairly quickly. Does this affect you in any critical production environment or can you live with it being included in the next regular release? In the meantime you could either use the nightly builds of LearnLib or fall-back to the tree cache. |
Great :) |
Hi :)
Describe the bug
Learning of Mealy Machines with TTT results in a cache ConflictException. When caching is removed, the algorithm learns the correct model.
Learning is done on randomly generated models, therefore there should be no non-deterministic behavior. In addition, if the learning algorithm is replaced, lets say with KV, the learning finishes as expected. So it seems that there might be some bug in TTT's handling of caching.
To Reproduce
I put a test script below that contains two seeds that reproduce the behavior and have included a screenshot of the output for one failing seed.
Desktop (please complete the following information):
Additional context
This happens relatively rarely, I encountered it while benchmarking random automata.
** Files **
![fail_seed_584](https://private-user-images.githubusercontent.com/28546846/331188295-27a65826-5d01-440a-84da-3622dc155fd9.PNG?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE2MTM4NjMsIm5iZiI6MTcyMTYxMzU2MywicGF0aCI6Ii8yODU0Njg0Ni8zMzExODgyOTUtMjdhNjU4MjYtNWQwMS00NDBhLTg0ZGEtMzYyMmRjMTU1ZmQ5LlBORz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzIyVDAxNTkyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTE2MTY4ZWIyYWEyOWYwYzk3NGNmNTQ5MjMyMTFlZjBmNmM0NzY2MmEwYTdmODEzMWQ4ZmIxZTJlN2RmNGY4YjcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Di-mnrMSUYMWnIWd2uxwPSWzP69J1zBnvgxFDsg2Z-w)
Output:
Code to reproduce:
The text was updated successfully, but these errors were encountered: