-
Notifications
You must be signed in to change notification settings - Fork 2
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
Functorize symbolic engine, mixed case specs, and document basic symbolic utilities #125
Conversation
and hide the conversions between Constraints/Transducers and Mixed there
Fixup 40af29f (Differentiate error/incomplete/unknown in symbolic utilities)
I appreciate the modification and think all this is going in a nice direction. As far as I am concerned, you can merge this PR. |
@treinen could you please have a look at my modifications to "your" utilities since before the introduction of incompleteness to symbolic utilities. Here is a comparison: 64a40fd...f335dc0 I am specifically wondering about the previous cases of colis-language/src/symbolic/symbolicUtility.mli Lines 79 to 87 in f335dc0
|
Still more specifically I am wondering about: colis-language/src/symbolic/utilities/dpkg.ml Lines 25 to 28 in f335dc0
where man dpkg specifies --compare-versions ver1 op ver2 . Should the implementation be as follows?
| ["--compare-versions"; _v1; _op; _v2] ->
incomplete ~utility "support for --compare-versions not yet implemented"
| "--compare-versions" :: _ ->
error ~utility "option --compare-versions expects exactly three arguments" |
…n SymbolicConstraints
Yes you are right @benozol, dpkg --compare-versions expects 3 arguments. |
1 similar comment
Yes you are right @benozol, dpkg --compare-versions expects 3 arguments. |
Ok merci ! I have corrected @Niols could you run again ginette? |
For some reason, it seems that I cannot comment with links? But it is on its way. |
Also, I have noticed that colis-anr/colis-batch@9985dd5 on b2175ee (that is the run whose link I just sent) runs significantly faster than colis-anr/colis-batch@09657ae (master) on 43429b1 (shadow-aware-printing) or d129924 (where this PR and shadow-aware-printing diverge). I am talking about something like 10 times faster. Is there anything you did after d129924 that would explain such a speedup? Any idea? I didn't see any commit message that would explain this. |
Actually, 18 times faster. |
I think it has to do with your sentence that said in my mind: that you were considering unknown commands as errors? This creates a loooot of false positives in Ginette. I guess then you changed back to propagating incompletenesses without seeing them as errors? Is that true? In which commit would that have happened? |
Uh that's strange indeed, no optimization was intended with this PR.
In 719f6f7 (and ddd4f64) I translated the old
No this behaviour didn't change – unknown commands still raise exceptions (with colis-language/src/symbolic/symbolicUtility.ml Lines 97 to 102 in b2175ee
However, I suggested to register all POSIX (and Debian) utilities as BTW can we get a list of reasons for From the batch runs available at http://ginette.informatique.univ-paris-diderot.fr/~niols/colis-batch/ the outlier seems to me |
If I had to guess, I would say your modifications first introduced a lot of new traces (that would explain the slow down) and then fixed it. And I happened to take a commit in the middle to branch and create
So, I am not so sure about the taxonomy anymore. What you call "error" is a
Now don't get me wrong, I'm happy that we easily see this "weird thing". Here, it comes from a bug in our tool, but we still detect bugs, and would have detected a bad usage of dpkg. But I think we're mostly lucky, because the execution kept running normally but ended up in a non-acceptable dpkg state, and that's how I saw it. Had the dpkg call been in a test, we might very well have missed it. Note that I might be totally wrong in what I am saying. But I'm trying to be as exact as possible in what I think happened so that you can correct what I haven't understood.
That has been on my todo list for a while and is near the top. Just after something that requires me to have a fast run of Ginette before all your modifications but with the shadow-aware printing. Hence why I'm very interested in the following:
This also happens with d129924, but I've never let the tool run completely because it's so long. I've just started a new run and it should end in a few hours. The result should be here. By the way, @treinen, do you think it would make sense to add a redirection of the kind |
Maybe I should put more info in the documentation here: colis-language/src/symbolic/symbolicUtility.mli Lines 79 to 87 in f335dc0
Yes colis-language/src/symbolic/symbolicUtility.ml Lines 250 to 254 in d129924
So it seems that you branched |
So I guess my question is then: what happens to incomplete states in the semantics? Do we simply stop their execution?
OK indeed. I have tried going to a much earlier commit and cherry pick my commits. This is now in the branch |
Incomplete behaviour is modelled in the concrete semantics, and yes, it stop further evaluation on that execution path. But – in advantage to using |
@Niols did you run batch since b2175ee, or could you please do so? I would like to compare again the results with those from master before all those changes (~ 64a40fd, that seems to be in the batch archive). If you have time to have another look on it – your comments would also be very welcome before finally merging this PR |
I just did, for b2175ee. |
And here if the one for 64a40fd, indeed taken out of the archives. |
Very similar numbers in the summary. And the few package reports I peeked on seem fine, except that they are hardly usable, but that's what's being fixed in #131. |
Many thanks. Do you think its better to wait for #131 to compare the results? |
#131 is ready. And I think that the changes are independent, so we could probably merge one in the other. But no, I think it is safe to merge this one first into master. |
The reports look ok to me – any last words for this PR @Niols ? |
Nope, let's merge this. Be my guest! |
Before #114 there was some confusion about the use of
failure
vserror
in the implementation of symbolic utilities. This PR fixes the distinction between the different behaviours from #114 and clarifies the documentation as follows:colis-language/src/symbolic/symbolicUtility.mli
Lines 79 to 87 in f335dc0