[pypy-dev] Errors running pypy with ctype library
Amaury Forgeot d'Arc
amauryfa at gmail.com
Wed Sep 7 08:57:50 CEST 2011
2011/9/7 Greg Bowyer <gbowyer at fastmail.co.uk>
> Hi all, I have a rather interesting in house networking tool that uses pcap
> to sniff packets, take them into twisted and replay them against a target.
>
> Internally the tight loop for packet reassembly is currently run via
> twisted and some custom parsing and packet reconstruction code, I have been
> investigating if I can make this code faster _without_ reimplementing the
> capture part in C, as such I think I have two options:
>
> * Pypy (which I would prefer as it means that I hopefully will gain
> performance improvements over time, as well as JIT acceleration throughout
> the code)
> * Cython (which will let me change the main loop to be mostly C without
> having to write a lot of C)
>
> The tool currently uses an old style cPython c extension to bind python to
> pcap, since this will be slow in pypy I found the first semi implemented
> ctype pcap binding from google code here (http://code.google.com/p/**pcap/<http://code.google.com/p/pcap/>)
> (I didnt write it so it may be broken)
>
> The following test code works fine on cPython2.7
>
The pcap module has an important issue; pcap_open_live() contains this code:
error=c_char_p()
handle=pcap_c_funcs.pcap_open_live(source,snaplen,promisc,to_ms,error)
Which is wrong: according to the man page, the "error" parameter
"is assumed to be able to hold at least PCAP_ERRBUF_SIZE chars"
which is not the case here, NULL is passed instead and bad things will
happen at runtime.
pcap should be modified, probably with something like "error =
create_string_buffer(256)"
--
Amaury Forgeot d'Arc
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pypy-dev/attachments/20110907/615d2c42/attachment.html>
More information about the pypy-dev
mailing list