-
Notifications
You must be signed in to change notification settings - Fork 77
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
Goblint server mode crashes with unexpected requests #983
Comments
Most of these should potentially be quite easy to fix by catching the appropriate exceptions in |
sim642
added a commit
that referenced
this issue
Feb 15, 2023
sim642
added a commit
that referenced
this issue
Feb 15, 2023
sim642
added a commit
that referenced
this issue
Feb 15, 2023
sim642
added a commit
that referenced
this issue
Feb 15, 2023
sim642
added a commit
that referenced
this issue
Feb 15, 2023
sim642
added a commit
that referenced
this issue
Feb 15, 2023
sim642
added a commit
that referenced
this issue
Feb 15, 2023
sim642
added a commit
that referenced
this issue
Feb 15, 2023
sim642
added a commit
to sim642/opam-repository
that referenced
this issue
Sep 13, 2023
CHANGES: * Add `setjmp`/`longjmp` analysis (goblint/analyzer#887, goblint/analyzer#970, goblint/analyzer#1015, goblint/analyzer#1019). * Refactor race analysis to lazy distribution (goblint/analyzer#1084, goblint/analyzer#1089, goblint/analyzer#1136, goblint/analyzer#1016). * Add thread-unsafe library function call analysis (goblint/analyzer#723, goblint/analyzer#1082). * Add mutex type analysis and mutex API analysis (goblint/analyzer#800, goblint/analyzer#839, goblint/analyzer#1073). * Add interval set domain and string literals domain (goblint/analyzer#901, goblint/analyzer#966, goblint/analyzer#994, goblint/analyzer#1048). * Add affine equalities analysis (goblint/analyzer#592). * Add use-after-free analysis (goblint/analyzer#1050, goblint/analyzer#1114). * Add dead code elimination transformation (goblint/analyzer#850, goblint/analyzer#979). * Add taint analysis for partial contexts (goblint/analyzer#553, goblint/analyzer#952). * Add YAML witness validation via unassume (goblint/analyzer#796, goblint/analyzer#977, goblint/analyzer#1044, goblint/analyzer#1045, goblint/analyzer#1124). * Add incremental analysis rename detection (goblint/analyzer#774, goblint/analyzer#777). * Fix address sets unsoundness (goblint/analyzer#822, goblint/analyzer#967, goblint/analyzer#564, goblint/analyzer#1032, goblint/analyzer#998, goblint/analyzer#1031). * Fix thread escape analysis unsoundness (goblint/analyzer#939, goblint/analyzer#984, goblint/analyzer#1074, goblint/analyzer#1078). * Fix many incremental analysis issues (goblint/analyzer#627, goblint/analyzer#836, goblint/analyzer#835, goblint/analyzer#841, goblint/analyzer#932, goblint/analyzer#678, goblint/analyzer#942, goblint/analyzer#949, goblint/analyzer#950, goblint/analyzer#957, goblint/analyzer#955, goblint/analyzer#954, goblint/analyzer#960, goblint/analyzer#959, goblint/analyzer#1004, goblint/analyzer#558, goblint/analyzer#1010, goblint/analyzer#1091). * Fix server mode for abstract debugging (goblint/analyzer#983, goblint/analyzer#990, goblint/analyzer#997, goblint/analyzer#1000, goblint/analyzer#1001, goblint/analyzer#1013, goblint/analyzer#1018, goblint/analyzer#1017, goblint/analyzer#1026, goblint/analyzer#1027). * Add documentation for configuration JSON schema and OCaml API (goblint/analyzer#999, goblint/analyzer#1054, goblint/analyzer#1055, goblint/analyzer#1053). * Add many library function specifications (goblint/analyzer#962, goblint/analyzer#996, goblint/analyzer#1028, goblint/analyzer#1079, goblint/analyzer#1121, goblint/analyzer#1135, goblint/analyzer#1138). * Add OCaml 5.0 support (goblint/analyzer#1003, goblint/analyzer#945, goblint/analyzer#1162).
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Goblint server mode seems to be very prone to crashing when presented with unexpected requests. This is problematic for GobPie because it means the server has to be restarted, which means all analysis needs to be run again with no way to reuse previous results.
So far I have encountered crashes in the following cases:
analyze
when there is a syntax error in the C code crashes withParsing errorFatal error: exception GoblintCil__Frontc.ParseError("Parse error")
analyze
when config has not been loaded crashes withFatal error: exception Failure("No suitable function to start from.")
. (In GobPie this can happen when running an analysis with an invalid goblint.json file.)node_state
with a node id that does not exist in the analysis results crashes the server withFatal error: exception Not_found
. (In GobPie this can happen when requesting node state for a node in the CFG of a function that is never called.)node_state
when analysis has not run crashes withFatal error: exception File "src/framework/control.ml", line 45, characters 76-82: Assertion failed
. (This should not be possible in current GobPie but it could happen if the rules around running analyses and restarting are changed.)functions
when analysis has not run crashes withFatal error: exception Invalid_argument("Option.get")
. (This should not be possible in current GobPie but it could happen if the rules around running analyses and restarting are changed.)The last three are particularly problematic because they can crash the server while running a request that should only read data and thus one might reasonably expect them to never affect the server in any way.
(All issues encountered with Goblint built from commit 3d4e7ad)
The text was updated successfully, but these errors were encountered: