Frama-C-discuss mailing list archives

This page gathers the archives of the old Frama-C-discuss archives, that was hosted by Inria's gforge before its demise at the end of 2020. To search for mails newer than September 2020, please visit the page of the new mailing list on Renater.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Frama-c-discuss] arbitrary buffers in analysis



On Fri, Aug 28, 2015 at 6:46 AM, Tim Newsham <tim.newsham at gmail.com> wrote:

> On Thu, Aug 27, 2015 at 6:40 PM, Tim Newsham <tim.newsham at gmail.com>
> wrote:
> I verified that the sodium version isnt reporting any dead code
> in my fopen model.  Perhaps it's unique to the newest version?
>

Indeed. I investigated, and the difference comes from the fact that Value
has a much improved understanding of the ACSL \subset operator in
Magnesium. It will reduce its state according to the possible values in the
second argument of \subset, which was not done in Sodium. Both Sodium and
Magnesium post-conditions in stdio.h are inconsistent with the body of
fopen you supplied, but this has no impact (except the "unknown" status) on
the contents of \result with Sodium.

Also, I verified that you need -plevel 256 in Sodium to completely analyze
your code with the main function I proposed, because Value implements the
\initialized predicate in a less efficient way compared to Magnesium. This
actually has a visible influence on the performances of the analysis: the
last 16 iterations take 3min39s with Sodium and 2m58s with Magnesium.

HTH,

-- 
Boris
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gforge.inria.fr/pipermail/frama-c-discuss/attachments/20150828/b54dc412/attachment.html>