Hello all

I'm currently playing with NativeBoost  (a great thing to have) and pharo
consistently crashes after running for a while. My impression is that
crashes happen during GCs as if something moves under the installed
callback. This may be also related to the libpcap itself, but how can I
know for sure. I've tried everything newest (vm+image+libpcap) and I also
migrated into a much more rigid scheme of storing and passing callback. Now
I've run of ideas where to look further.

So, it is like this. NBPCapHandlerCallback  is a procedure which is called
by libpcap for every packet it has in its internal buffer after the
application calls pcap_dispatch(). pcap_dispatch receives the callback as a
parameter.  I have to repeatedly call pcap_dispatch in so called
nonblocking mode (and pass the callback each time) every 5 milliseconds to
collect packets - we are single threaded. This amounts to awful whole 200
callback installations per second, may be libpcap was not well tested in
this scenario (I suppose pcap_loop runs in separated thread in wireshark
and callback installation happens several times per session at most) -
hence my doubts. But also - could it be something with NB?

Any hints how to proceed with it are greatly appreciated. This is amazing
how one can quickly assemble something that emulates thousands of
dhcp-clients (this is what the app does) with current Pharo.  But the thing
dies off after 10-15 minutes.



best wishes,
  Danil

http://www.tcpdump.org/manpages/pcap_loop.3pcap.html

=========
Generic failure
NBNativeCodeGen class>>signalError:
NBNativeCodeGen class>>handleFailureIn:nativeCode:
NBNativeCodeGen class>>methodAssembly:
LargePositiveInteger(NBFFICallback)>>primLeave:stackPtr:contextOop:returnValue:primitiveMethod:
NBPCapHandlerCallback(NBFFICallback)>>pvtEnter:stackPointer:primitiveMethod:
in Block:
Segmentation fault Wed Feb 12 16:17:25 2014


pharo VM version: 3.9-7 #1 Fri Feb  7 16:55:52 CET 2014 gcc 4.6.3
[Production ITHB VM]
Built from: NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid:
acc98e51-2fba-4841-a965-2975997bba66 Feb  7 2014
With: NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid:
acc98e51-2fba-4841-a965-2975997bba66 Feb  7 2014
Revision: https://github.com/pharo-project/pharo-vm.git Commit:
ef5832e6f70e5b24e8b9b1f4b8509a62b6c88040 Date: 2014-01-26 15:34:28 +0100
By: Esteban Lorenzano <[email protected]> Jenkins build #14797
Build host: Linux pharo-linux 3.2.0-31-generic-pae #50-Ubuntu SMP Fri Sep 7
16:39:45 UTC 2012 i686 i686 i386 GNU/Linux
plugin path: /home/Pharo/ [default: /home/Pharo/]


C stack backtrace:
./pharo[0x809bc4c]
./pharo[0x809bf66]
linux-gate.so.1(__kernel_rt_sigreturn+0x0)[0xb76e640c]
./pharo(incrementalGC+0x18a)[0x80859da]
./pharo[0x808655a]
./pharo[0x808cbb7]
./pharo[0x808ccba]
./pharo(ceStackOverflow+0x59)[0x808f5f9]
[0x770f5260]
[0x771017e0]
[0x770fb11e]
[0x770fa939]
[0x770f9813]
[0x770f5700]
[0x770f55c0]


Smalltalk stack dump:
0xbf8b6144 M BlockClosure>ensure: 0x7c429d44: a(n) BlockClosure
0xbf8b6164 M Semaphore>critical: 0x772901d8: a(n) Semaphore
0xbf8b6180 M SmallInteger(Integer)>atRandom       0x13=9
0xbf8b61a8 M NLDHCPClientInit>enter 0x7c3be76c: a(n) NLDHCPClientInit
0xbf8b61c0 M [] in NLDHCPHost>changeStateTo: 0x793e816c: a(n) NLDHCPHost
0xbf8b61e0 I [] in BlockClosure>newProcess 0x7c3be828: a(n) BlockClosure

Most recent primitives
at:put:
at:put:
at:put:
at:put:
basicNew:
basicNew
class
class
replaceFrom:to:with:startingAt:
basicNew:
basicNew
class
class
replaceFrom:to:with:startingAt:
species
species
at:put:
at:put:
class
class
replaceFrom:to:with:startingAt:
species
species
at:put:
at:put:
class
class
replaceFrom:to:with:startingAt:
at:put:
species
basicNew:
replaceFrom:to:with:startingAt:
class
class
species
basicNew:
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
basicNew:
atAllPut:
class
class
replaceFrom:to:with:startingAt:
species
basicNew:
replaceFrom:to:with:startingAt:
at:put:
at:put:
class
at:put:
at:put:
at:put:
species
basicNew:
replaceFrom:to:with:startingAt:
species
basicNew:
replaceFrom:to:with:startingAt:
basicNew:
basicNew
class
class
replaceFrom:to:with:startingAt:
class
class
species
basicNew:
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
species
basicNew:
replaceFrom:to:with:startingAt:
basicNew:
basicNew
class
class
replaceFrom:to:with:startingAt:
class
class
replaceFrom:to:with:startingAt:
class
class
replaceFrom:to:with:startingAt:
basicNew:
at:put:
at:put:
class
class
replaceFrom:to:with:startingAt:
class
class
replaceFrom:to:with:startingAt:
class
class
replaceFrom:to:with:startingAt:
species
basicNew:
replaceFrom:to:with:startingAt:
new
at:put:
at:put:
class
stringHash:initialHash:
class
stringHash:initialHash:
class
stringHash:initialHash:
basicNew
objectAt:
basicNew:
stackp:
basicNew
primitiveResume
basicNew
basicNew
new:
basicNew
new:
objectAt:
basicNew:
stackp:
basicNew
primitiveResume
findNextUnwindContextUpTo:
terminateTo:
suspend
species
basicNew:
replaceFrom:to:with:startingAt:
species
species
class
class
basicNew
shallowCopy
shallowCopy
basicNew:
basicNew
species
basicNew:
replaceFrom:to:with:startingAt:
class
class
replaceFrom:to:with:startingAt:
species
basicNew:
replaceFrom:to:with:startingAt:
species
basicNew:
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
basicNew:
basicNew
species
basicNew:
replaceFrom:to:with:startingAt:
class
class
replaceFrom:to:with:startingAt:
species
basicNew:
replaceFrom:to:with:startingAt:
species
basicNew:
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
wait
truncated
truncated
signal
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
new
at:put:
at:put:
class
at:put:
at:put:
class
stringHash:initialHash:
class
stringHash:initialHash:
class
stringHash:initialHash:
class
stringHash:initialHash:
class
stringHash:initialHash:
class
stringHash:initialHash:
species
basicNew:
replaceFrom:to:with:startingAt:
species
basicNew:
replaceFrom:to:with:startingAt:
species
basicNew:
replaceFrom:to:with:startingAt:
species
basicNew:
replaceFrom:to:with:startingAt:
class
species
hashBytes:startingWith:
species
species
class
class
class
stringHash:initialHash:
class
stringHash:initialHash:
class
stringHash:initialHash:
basicNew:
basicNew
class
class
replaceFrom:to:with:startingAt:
basicNew:
basicNew
class
class
replaceFrom:to:with:startingAt:
class
class
species
basicNew:
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
species
basicNew:
replaceFrom:to:with:startingAt:
class
class
species
basicNew:
replaceFrom:to:with:startingAt:
replaceFrom:to:with:startingAt:
species
basicNew:
replaceFrom:to:with:startingAt:
pcapSendPacket:size:
findNextUnwindContextUpTo:
terminateTo:
suspend
basicNew
basicNew
wait
**IncrementalGC**

stack page bytes 4096 available headroom 3300 minimum unused headroom 3480

        (Segmentation fault)

Reply via email to