Hello,
Thank you very much for the feedback! Your tool seems to be very
promising and useful. The whole team (we are studying computer science)
is very impressed by your work.
We'll correct those bugs ASAP.
Regards,
Samuel on behalf of the Savonet Team.
PS: I get 403 (permission denied) when I try to download your paper.
PPS: is there somewhere we can download the tool, even in beta (it might
be very useful for some other libs we have developed)?
Michael Furr wrote:
Hello,
I am currently researching methods for applying static analysis to
software projects which use multiple languages. As part of this
effort, I am writing a tool which does type inference across foreign
function calls in order to detect bugs in programs which use the
OCaml/C foreign function interface. While the tool isn't quite ready
for release yet(soon i hope!), I have already found some bugs in
several programs which I have run it on. I haven't run it on all of
the programs on your web page, just the ssl and vorbis libraries(I
actually just picked things at random from the OCaml Humps page) and
wanted to let you know about the bugs I found in it. For the
ocaml-vorbis library, I found just one small bug:
In file vorbis_stubs.c, function copy_buffer:120:
CAMLparam/local was used but there is no CAMLreturn on this branch
For the ssl library, my tool reported 4 errors and 2 warnings. The
errors are:
In file ssl_stubs.c, function ocaml_ssl_connect:216:
Int_val instead of Val_int (or vice versa)
In file ssl_stubs.c, function ocaml_ssl_write:228:
While checking the sig of caml_raise_with_arg
while looking at param (((long)err<<1)+1),
Int_val instead of Val_int (or vice versa)
In file ssl_stubs.c, function ocaml_ssl_read:240:
While checking the sig of caml_raise_with_arg
while looking at param (((long)err<<1)+1),
Int_val instead of Val_int (or vice versa)
In file ssl_stubs.c, function ocaml_ssl_accept:251:
While checking the sig of Int_val
Int_val instead of Val_int (or vice versa)
The two warnings are about functions omitting a parameter of type
'unit'. Recall that OCaml represents "unit" as the value Val_int(0),
so when a function is called with an argument of type "unit", a value
will be placed on the C stack, even though it is rather useless.
Although omitting this argument won't cause any ill effects, it is a
type error(C and Ocaml will view the stack with different sizes) and I
feel it should be fixed for "Good Practice".
In file ssl_stubs.c, function ocaml_ssl_create_client_context:67:
arity mismatch. Expecting a function with sig:
unit
but got instead:
<empty>
In file ssl_stubs.c, function ocaml_ssl_init:171:
arity mismatch. Expecting a function with sig:
unit
but got instead:
<empty>
I hope you find this bug report useful. If you are interested in
reading about how the tool works, I have released a technical report
describing the technique and it is available from my web page[1].
Also, if you have any suggestions as to how a static analysis tool
might further help you develop multi-lingual software more
efficiently, I would love to hear about it.
Cheers,
-Mike
1 - http://www.cs.umd.edu/~furr/
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://productguide.itmanagersjournal.com/
_______________________________________________
Savonet-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/savonet-users