[Glass] problem update: Zinc server with Seaside (3.1)

Dale K. Henrichs dale.henrichs at gemtalksystems.com
Wed Dec 18 18:39:13 PST 2013


Here's the stack: 

1. OffsetError(AbstractException)>>_signalWith: @5 line 25 
2. OffsetError(AbstractException)>>signal @2 line 47 
3. ByteArray(Object)>>_error:args: @15 line 11 
4. ByteArray(Object)>>_errorIndexOutOfRange: @2 line 6 
5. ByteArray>>at: @4 line 13 
6. SocketStream>>next @13 line 10 
7. ZnLineReader>>processNext @5 line 4 
8. ZnLineReader>>nextLine @3 line 3 
9. ZnRequestLine>>readFrom: @3 line 3 
10. ZnRequestLine class>>readFrom: @3 line 3 
11. ZnRequest>>readHeaderFrom: @2 line 2 
12. ZnRequest(ZnMessage)>>readBinaryFrom: @2 line 3 
13. ZnRequest class(ZnMessage class)>>readBinaryFrom: @3 line 3 
14. [] in ExecBlock1(ZnZincServerAdaptor)>>configureServerForBinaryReading @2 line 4 
15. [] in ZnManagingMultiThreadedServer(ZnSingleThreadedServer)>>readRequest: @3 line 6 
16. [] in ExecBlock0(ZnSingleThreadedServer)>>withMaximumEntitySizeDo: @2 line 6 
17. [] in ZnMaximumEntitySize class(DynamicVariable class)>>value:during: @3 line 9 
18. ZnMaximumEntitySize class(ExecBlock)>>ensure: @2 line 12 
19. ZnMaximumEntitySize class(DynamicVariable class)>>value:during: @6 line 10 
20. ZnManagingMultiThreadedServer(ZnSingleThreadedServer)>>withMaximumEntitySizeDo: @5 line 5 
21. ZnManagingMultiThreadedServer(ZnSingleThreadedServer)>>readRequest: @2 line 6 
22. [] in ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>readRequestSafely: @2 line 4 
23. ZnManagingMultiThreadedServer(ExecBlock)>>on:do: @3 line 42 
24. ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>readRequestSafely: @3 line 5 
25. ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>executeOneRequestResponseOn: @2 line 7 
26. [] in ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>executeRequestResponseLoopOn: @2 line 10 
27. [] in ZnCurrentServer class(DynamicVariable class)>>value:during: @3 line 9 
28. ZnCurrentServer class(ExecBlock)>>ensure: @2 line 12 
29. ZnCurrentServer class(DynamicVariable class)>>value:during: @6 line 10 
30. ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>executeRequestResponseLoopOn: @4 line 8 
31. [] in ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>serveConnectionsOn: @2 line 9 
32. ZnManagingMultiThreadedServer(ExecBlock)>>ensure: @2 line 12 
33. [] in ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>serveConnectionsOn: @2 line 10 
34. [] in ExecBlock0(ExecBlock)>>ifCurtailed: @2 line 6 
35. ExecBlock0(ExecBlock)>>ensure: @2 line 12 
36. ZnManagingMultiThreadedServer(ExecBlock)>>ifCurtailed: @3 line 8 
37. [] in ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>serveConnectionsOn: @2 line 11 
38. GsProcess>>_start @7 line 16 
39. UndefinedObject(GsNMethod class)>>_gsReturnToC @1 line 1 

----- Original Message -----

| From: "Dale K. Henrichs" <dale.henrichs at gemtalksystems.com>
| To: "Johan Brichau" <johan at yesplan.be>
| Cc: glass at lists.gemtalksystems.com
| Sent: Wednesday, December 18, 2013 6:26:01 PM
| Subject: Re: [Glass] problem update: Zinc server with Seaside (3.1)

| Johan,

| I've finally started monkeying with this and the first thing I ran
| into (running this under tODE and trying to duplicate the GemTools
| error condition) was an error involving SocketStream and an apparent
| buffer overflow ... it looks to me that SocketStream>>next has no
| logic to refill the buffer once it is full ... at least I got a
| stack in which the ByteArray buffer was accessed at slot 4097 (1
| larger than the buffer):

| There are three other processes floating around as well ... I'll keep
| digging ...

| Dale

| ----- Original Message -----

| | From: "Johan Brichau" <johan at yesplan.be>
| 
| | To: glass at lists.gemtalksystems.com
| 
| | Sent: Sunday, December 15, 2013 1:20:20 PM
| 
| | Subject: [Glass] problem update: Zinc server with Seaside (3.1)
| 

| | Hi all,
| 

| | I’m working on the Zinc server adaptor for Seaside 3.1 but I got
| | stuck.
| 

| | Launching the following from Gemtools brings up the server and
| | makes
| | it respond to requests nicely. Trying to do the same from a topaz
| | session though, immediately throws an out-of-mem exception.
| 

| | WAGsZincAdaptor startOn: 8383
| 

| | If you break the blocking call in Gemtools and run the line above
| | again, you also run out-of-mem after a couple of times (but only
| | after _also_ connecting to the server from your web browser).
| 
| | First question about this is why that does not happen in gem tools?
| | I
| | tried turning the auto commit off but that did not change anything.
| 

| | Following advice in [1], I started investigating from gemtools and
| | got this for the byte sizes in temp obj memory on 75% full:
| 

| | #'ByteArray'->22153440, #'GsMethodDictionary'->3073088,
| | #'GsMethodLookupCache'->2224064, #'GsProcess'->562224,
| | #'String'->415504, #'Array'->340168, #'SocketStream'->322680,
| | #'ExecBlock'->201664, #'VariableContext'->175552,
| | #'SocketStreamSocket'->150696, …0
| 

| | The process browser shows over 100 threads displayed as follows:
| 

| | (priority=25) ready [oop= …. ]
| 

| | I guess this is where Dale started having nightmares. The stack
| | traces show the out-of-mem always happens in the
| | ZnNetworkingUtils>>setSocketStreamParameters: method.
| 

| | All of this is using the current Zinc version on github for
| | gemstone
| | 3.1 [2] and my version of the Seaside 3.1 port [3]
| 
| | To try, load Seaside from my repo, load the ‘Zinc-Seaside’ group
| | from
| | the baseline and hit the above.
| 

| | Any ideas are welcome
| 

| | Johan
| 

| | [1]
| | http://gemstonesoup.wordpress.com/2008/11/19/gemstone-101-managing-out-of-memory-situations/
| 
| | [2] https://github.com/glassdb/zinc/tree/gemstone3.1
| 
| | [3] https://github.com/jbrichau/Seaside31
| 
| | _______________________________________________
| 
| | Glass mailing list
| 
| | Glass at lists.gemtalksystems.com
| 
| | http://lists.gemtalksystems.com/mailman/listinfo/glass
| 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/private/glass/attachments/20131218/252d088d/attachment.html>


More information about the Glass mailing list