Possible bug in Sockets?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Possible bug in Sockets?

Ladislav Marek
Hi,

I'm playing with my HTTP server in GST and it still ends with SIGABRT.
There is small reproduce script:

PackageLoader fileInPackage: #Sockets.

Eval [
    | connections |

    5 timesRepeat: [
        connections := Set new.

        1000 timesRepeat: [
            connections add: (Sockets.Socket remote: '127.0.0.1' port: 80)].

        connections do: [ :connection | connection close]
    ]
]

fails with:

test.st:14: Aborted
test.st:14: Aborted
(ip 28)WeakIdentitySet>>#findIndex:
(ip 6)WeakIdentitySet(WeakSet)>>#add:
(ip 8)TCPSocketImpl(FileDescriptor)>>#addToBeFinalized
(ip 6)TCPSocketImpl(FileDescriptor)>>#initialize
(ip 14)TCPSocketImpl class(FileDescriptor class)>>#on:
(ip 30)TCPSocketImpl class(AbstractSocketImpl class)>>#newFor:
(ip 8)Socket class(AbstractSocket class)>>#new:addressClass:
(ip 12)IPAddress class(SocketAddress class)>>#newSocket:
(ip 66)Socket class(StreamSocket class)>>#remote:port:local:port:
(ip 20)Socket class(StreamSocket class)>>#remote:port:
(ip 46)UndefinedObject>>#executeStatements
(ip 0)<bottom>
Aborted

or sometimes:
(ip 24)Set>>#findIndex:
(ip 12)Set(HashedCollection)>>#add:
(ip 28)TCPSocketImpl(Object)>>#addToBeFinalized
(ip 14)TCPSocketImpl(FileDescriptor)>>#addToBeFinalized
(ip 6)TCPSocketImpl(FileDescriptor)>>#initialize
(ip 14)TCPSocketImpl class(FileDescriptor class)>>#on:
(ip 30)TCPSocketImpl class(AbstractSocketImpl class)>>#newFor:
(ip 8)Socket class(AbstractSocket class)>>#new:addressClass:
(ip 12)IPAddress class(SocketAddress class)>>#newSocket:
(ip 66)Socket class(StreamSocket class)>>#remote:port:local:port:
(ip 20)Socket class(StreamSocket class)>>#remote:port:
(ip 46)UndefinedObject>>#executeStatements
(ip 0)<bottom>
Aborted


is that correct? 5 * 1000 connections is too much?

Ladislav

_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: Possible bug in Sockets?

Paolo Bonzini-2
On Sun, Oct 16, 2011 at 22:06, Ladislav Marek <[hidden email]> wrote:
> Hi,
>
> I'm playing with my HTTP server in GST and it still ends with SIGABRT.

Can you put a pointer to the server code?

> is that correct? 5 * 1000 connections is too much?

Still shouldn't abort.

Paolo

_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: Possible bug in Sockets?

Ladislav Marek
On Sun, Oct 16, 2011 at 22:11, Paolo Bonzini <[hidden email]> wrote:
> Can you put a pointer to the server code?

It is attached in
http://forum.world.st/Bug-in-GC-cuasing-SIGABRT-tt3680625.html. I can
provide newer version… but Swazoo performs better.

>
>> is that correct? 5 * 1000 connections is too much?

aha

>
> Still shouldn't abort.
>
> Paolo
>

_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: Possible bug in Sockets?

Ladislav Marek
I have tried mentioned script on different machine and I have to
change 5 timesRepeat to 10 timesRepeat to reproduce that SIGABRT.

I think it can be related to GC and weak collections, there is another
script which causes SIGABRT:

weakSet := WeakSet new.
weakSet2 := WeakSet new.

80000 timesRepeat: [
    obj := Object new.

    weakSet add: obj.
    weakSet2 add: obj.

    obj := nil.
].

output:

(ip 32)WeakSet(HashedCollection)>>#rehashObjectsAfter:
(ip 30)WeakSet(HashedCollection)>>#remove:ifAbsent:
(ip 10)WeakSet(Collection)>>#mourn:
(ip 12)WeakSet>>#mourn:
(ip 8)HomedAssociation>>#mourn
(ip 2)[] in ProcessorScheduler>>#startFinalizers
(ip 26)Array(SequenceableCollection)>>#do:
(ip 4)[] in ProcessorScheduler>>#startFinalizers
(ip 4)[] in BlockClosure>>#newProcessWith:
(ip 48)[] in Process>>#onBlock:at:suspend:
(ip 12)<unwind> BlockClosure>>#on:do:
(ip 10)[] in Process>>#onBlock:at:suspend:
(ip 6)<unwind> BlockClosure>>#ensure:
(ip 6)[] in Process>>#onBlock:at:suspend:
(ip 42)[] in BlockClosure>>#asContext:
(ip 14)BlockContext class>>#fromClosure:parent:


Ladislav

On Sun, Oct 16, 2011 at 22:21, Ladislav Marek <[hidden email]> wrote:

> On Sun, Oct 16, 2011 at 22:11, Paolo Bonzini <[hidden email]> wrote:
>> Can you put a pointer to the server code?
>
> It is attached in
> http://forum.world.st/Bug-in-GC-cuasing-SIGABRT-tt3680625.html. I can
> provide newer version… but Swazoo performs better.
>
>>
>>> is that correct? 5 * 1000 connections is too much?
>
> aha
>
>>
>> Still shouldn't abort.
>>
>> Paolo
>>
>

_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: Possible bug in Sockets?

Paolo Bonzini-2
It is caused by this patch:

commit c51f7d2165c8e811aeddfba633a9dc7a49852b99
Author: Gwenael Casaccio <[hidden email]>
Date:   Wed May 18 23:19:47 2011 +0200

     do not automatically tenure large objects

     libgst:
     2011-05-18  Gwenael Casaccio  <[hidden email]>

      * libgst/gstpriv.h: Fix documentation of F_FIXED.
      * libgst/oop.c: Implement fixed young objects.

I'll revert it for now.

Paolo

_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: Possible bug in Sockets?

Ladislav Marek
Thanks.

On Fri, Oct 21, 2011 at 12:00, Paolo Bonzini <[hidden email]> wrote:

> It is caused by this patch:
>
> commit c51f7d2165c8e811aeddfba633a9dc7a49852b99
> Author: Gwenael Casaccio <[hidden email]>
> Date:   Wed May 18 23:19:47 2011 +0200
>
>    do not automatically tenure large objects
>
>    libgst:
>    2011-05-18  Gwenael Casaccio  <[hidden email]>
>
>        * libgst/gstpriv.h: Fix documentation of F_FIXED.
>        * libgst/oop.c: Implement fixed young objects.
>
> I'll revert it for now.
>
> Paolo
>

_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk