Sven Van Caekenberghe wrote:
Hi,

User Herby Vojčík seems to have an issue with the --headless option on Windows 
10

https://pharo.fogbugz.com/f/cases/20271/ZnServer-managedServers-disappear-when-headless-mode-used

I cannot reproduce his problem.

Maybe there are Windows users out there who can have a look and help him ?

Thx,

Sven



But from the PharoDebug.log I sent to the issue (and send here as you wanted to continue discussion here) it should be clear self isRunning wasn't false, even if both process and serverSocket are shown as nil.

Very strange.

Somewhere between headless W10 shutdown and W10 ui startup something must be broken that made Zinc unregister the running and registered server.

Herby
THERE_BE_DRAGONS_HERE
Error: Unregistering a server!
25 July 2017 8:49:38.139084 pm

VM: Win32 - IX86 - 10.0 - CoInterpreter VMMaker.oscog-eem.2254 uuid: 
4f2c2cce-f4a2-469a-93f1-97ed941df0ad Jul 20 2017
StackToRegisterMappingCogit VMMaker.oscog-eem.2252 uuid: 
2f3e9b0e-ecd3-4adf-b092-cce2e2587a5c Jul 20 2017
VM: 201707201942 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $ Date: 
Thu Jul 20 12:42:21 2017 -0700 $ Plugins: 201707201942 
https://github.com/OpenSmalltalk/opensmalltalk-vm.git $

Image: Pharo6.0 [Latest update: #60510]

ZnManagingMultiThreadedServer class(ZnServer class)>>unregister:
        Receiver: ZnManagingMultiThreadedServer
        Arguments and temporary variables: 
                server:         a ZnManagingMultiThreadedServer(stopped 4998)
        Receiver's instance variables: 
                superclass:     ZnMultiThreadedServer
                methodDict:     a 
MethodDictionary(#closeConnections->ZnManagingMultiThreadedServer...etc...
                format:         65543
                layout:         a FixedLayout
                instanceVariables:      nil
                organization:   a ClassOrganization
                subclasses:     nil
                name:   #ZnManagingMultiThreadedServer
                classPool:      a Dictionary()
                sharedPools:    nil
                environment:    a SystemDictionary(lots of globals)
                category:       #'Zinc-HTTP-Client-Server'
                traitComposition:       {}
                localSelectors:         nil
                Default:        nil


ZnManagingMultiThreadedServer(ZnServer)>>unregister
        Receiver: a ZnManagingMultiThreadedServer(stopped 4998)
        Arguments and temporary variables: 

        Receiver's instance variables: 
                options:        a Dictionary(#delegate->a TowergameDelegate 
#port->4998 )
                sessionManager:         nil
                process:        nil
                serverSocket:   nil
                logLevel:       3
                lock:   nil
                connections:    an OrderedCollection()


ZnManagingMultiThreadedServer(ZnSingleThreadedServer)>>stop:
        Receiver: a ZnManagingMultiThreadedServer(stopped 4998)
        Arguments and temporary variables: 
                unregister:     true
        Receiver's instance variables: 
                options:        a Dictionary(#delegate->a TowergameDelegate 
#port->4998 )
                sessionManager:         nil
                process:        nil
                serverSocket:   nil
                logLevel:       3
                lock:   nil
                connections:    an OrderedCollection()


ZnManagingMultiThreadedServer>>stop:
        Receiver: a ZnManagingMultiThreadedServer(stopped 4998)
        Arguments and temporary variables: 
                unregister:     true
        Receiver's instance variables: 
                options:        a Dictionary(#delegate->a TowergameDelegate 
#port->4998 )
                sessionManager:         nil
                process:        nil
                serverSocket:   nil
                logLevel:       3
                lock:   nil
                connections:    an OrderedCollection()


ZnManagingMultiThreadedServer(ZnServer)>>stop
        Receiver: a ZnManagingMultiThreadedServer(stopped 4998)
        Arguments and temporary variables: 

        Receiver's instance variables: 
                options:        a Dictionary(#delegate->a TowergameDelegate 
#port->4998 )
                sessionManager:         nil
                process:        nil
                serverSocket:   nil
                logLevel:       3
                lock:   nil
                connections:    an OrderedCollection()


ZnManagingMultiThreadedServer(ZnSingleThreadedServer)>>start
        Receiver: a ZnManagingMultiThreadedServer(stopped 4998)
        Arguments and temporary variables: 

        Receiver's instance variables: 
                options:        a Dictionary(#delegate->a TowergameDelegate 
#port->4998 )
                sessionManager:         nil
                process:        nil
                serverSocket:   nil
                logLevel:       3
                lock:   nil
                connections:    an OrderedCollection()


[ :each | each start ] in [ self managedServers do: [ :each | each start ] ] in 
[ :manager | 
manager default currentSession
        addDeferredStartupAction: [ self managedServers do: [ :each | each 
start ] ] ] in ZnServer class>>startUp:
        Receiver: ZnServer
        Arguments and temporary variables: 
                resuming:       true
                manager:        SessionManager
                each:   a ZnManagingMultiThreadedServer(stopped 4998)
        Receiver's instance variables: 
                superclass:     Object
                methodDict:     a 
MethodDictionary(#authenticator->ZnServer>>#authenticator #authen...etc...
                format:         65538
                layout:         a FixedLayout
                instanceVariables:      nil
                organization:   a ClassOrganization
                subclasses:     {ZnSingleThreadedServer}
                name:   #ZnServer
                classPool:      a Dictionary(#AlwaysRestart->true 
#ManagedServers->an IdentitySet(a ...etc...
                sharedPools:    an OrderedCollection()
                environment:    a SystemDictionary(lots of globals)
                category:       #'Zinc-HTTP-Client-Server'
                traitComposition:       {}
                localSelectors:         nil


IdentitySet(Set)>>do:
        Receiver: an IdentitySet(a ZnManagingMultiThreadedServer(stopped 4998))
        Arguments and temporary variables: 
                aBlock:         [ :each | each start ]
                index:  7
                each:   a ZnManagingMultiThreadedServer(stopped 4998)
        Receiver's instance variables: 
                tally:  1
                array:  an Array(nil nil nil nil nil nil a 
ZnManagingMultiThreadedServer(stopped...etc...


[ self managedServers do: [ :each | each start ] ] in [ :manager | 
manager default currentSession
        addDeferredStartupAction: [ self managedServers do: [ :each | each 
start ] ] ] in ZnServer class>>startUp:
        Receiver: ZnServer
        Arguments and temporary variables: 
                resuming:       true
                manager:        SessionManager
        Receiver's instance variables: 
                superclass:     Object
                methodDict:     a 
MethodDictionary(#authenticator->ZnServer>>#authenticator #authen...etc...
                format:         65538
                layout:         a FixedLayout
                instanceVariables:      nil
                organization:   a ClassOrganization
                subclasses:     {ZnSingleThreadedServer}
                name:   #ZnServer
                classPool:      a Dictionary(#AlwaysRestart->true 
#ManagedServers->an IdentitySet(a ...etc...
                sharedPools:    an OrderedCollection()
                environment:    a SystemDictionary(lots of globals)
                category:       #'Zinc-HTTP-Client-Server'
                traitComposition:       {}
                localSelectors:         nil


BlockClosure>>cull:
        Receiver: [ self managedServers do: [ :each | each start ] ]
        Arguments and temporary variables: 
                anArg:  true
        Receiver's instance variables: 
                outerContext:   [ :manager | 
manager default currentSession
        addDeferredStartupA...etc...
                startpc:        83
                numArgs:        0


WorkingSession>>executeDeferredStartupActions:
        Receiver: a WorkingSession
        Arguments and temporary variables: 
                resuming:       true
                action:         [ self managedServers do: [ :each | each start 
] ]
        Receiver's instance variables: 
                manager:        a SessionManager
                deferredStartupActions:         an OrderedCollection()
                id:     nil
                creationTime:   2017-07-25T20:47:08.326981+02:00


WorkingSession>>runStartup:
        Receiver: a WorkingSession
        Arguments and temporary variables: 
                isImageStarting:        true
        Receiver's instance variables: 
                manager:        a SessionManager
                deferredStartupActions:         an OrderedCollection()
                id:     nil
                creationTime:   2017-07-25T20:47:08.326981+02:00


WorkingSession>>start:
        Receiver: a WorkingSession
        Arguments and temporary variables: 
                isImageStarting:        true
        Receiver's instance variables: 
                manager:        a SessionManager
                deferredStartupActions:         an OrderedCollection()
                id:     nil
                creationTime:   2017-07-25T20:47:08.326981+02:00


SessionManager>>snapshot:andQuit:
        Receiver: a SessionManager
        Arguments and temporary variables: 
                save:   true
                quit:   false
                isImageStarting:        true
                snapshotResult:         true
        Receiver's instance variables: 
                currentSession:         a WorkingSession
                categories:     an OrderedCollection(a SessionCategory(System) 
a SessionCategory(Ne...etc...
                guiCategory:    a SessionCategory(Graphical User Interface)
                toolsCategory:  a SessionCategory(Tools)
                networkCategory:        a SessionCategory(Network)
                systemCategory:         a SessionCategory(System)
                userCategory:   a SessionCategory(User)


[ ^ SessionManager default snapshot: save andQuit: quit ] in 
SmalltalkImage>>snapshot:andQuit:
        Receiver: Smalltalk
        Arguments and temporary variables: 
                save:   true
                quit:   false
        Receiver's instance variables: 
                globals:        a SystemDictionary(lots of globals)
                deferredStartupActions:         an OrderedCollection()
                specialObjectsArray:    an Array(nil false true 
#Processor->Processor Bitmap Small...etc...
                session:        an Object
                vm:     a VirtualMachine


CurrentExecutionEnvironment class>>activate:for:
        Receiver: CurrentExecutionEnvironment
        Arguments and temporary variables: 
                anExecutionEnvironment:         a DefaultExecutionEnvironment
                aBlock:         [ ^ SessionManager default snapshot: save 
andQuit: quit ]
                current:        nil
        Receiver's instance variables: 
                superclass:     ProcessLocalVariable
                methodDict:     a 
MethodDictionary(#default->CurrentExecutionEnvironment>>#default ...etc...
                format:         65537
                layout:         a FixedLayout
                instanceVariables:      nil
                organization:   a ClassOrganization
                subclasses:     nil
                name:   #CurrentExecutionEnvironment
                classPool:      a Dictionary()
                sharedPools:    an OrderedCollection()
                environment:    a SystemDictionary(lots of globals)
                category:       #'Kernel-Processes'
                traitComposition:       {}
                localSelectors:         nil
                soleInstance:   a CurrentExecutionEnvironment


DefaultExecutionEnvironment(ExecutionEnvironment)>>beActiveDuring:
        Receiver: a DefaultExecutionEnvironment
        Arguments and temporary variables: 
                aBlock:         [ ^ SessionManager default snapshot: save 
andQuit: quit ]
        Receiver's instance variables: 
a DefaultExecutionEnvironment

DefaultExecutionEnvironment class>>beActiveDuring:
        Receiver: DefaultExecutionEnvironment
        Arguments and temporary variables: 
                aBlock:         [ ^ SessionManager default snapshot: save 
andQuit: quit ]
        Receiver's instance variables: 
                superclass:     ExecutionEnvironment
                methodDict:     a 
MethodDictionary(#prepareForNewProcess:->DefaultExecutionEnvironm...etc...
                format:         0
                layout:         a FixedLayout
                instanceVariables:      nil
                organization:   a ClassOrganization
                subclasses:     nil
                name:   #DefaultExecutionEnvironment
                classPool:      a Dictionary()
                sharedPools:    an OrderedCollection()
                environment:    a SystemDictionary(lots of globals)
                category:       #'Kernel-Processes'
                traitComposition:       {}
                localSelectors:         nil
                instance:       a DefaultExecutionEnvironment


SmalltalkImage>>snapshot:andQuit:
        Receiver: Smalltalk
        Arguments and temporary variables: 
                save:   true
                quit:   false
        Receiver's instance variables: 
                globals:        a SystemDictionary(lots of globals)
                deferredStartupActions:         an OrderedCollection()
                specialObjectsArray:    an Array(nil false true 
#Processor->Processor Bitmap Small...etc...
                session:        an Object
                vm:     a VirtualMachine


SmalltalkImage>>saveImageInFileNamed:
        Receiver: Smalltalk
        Arguments and temporary variables: 
                aFile:  'D:\Herby\Work\cinegames\towergame-backend\work.image'
                imageFile:      File @ 
D:\Herby\Work\cinegames\towergame-backend\work.image
        Receiver's instance variables: 
                globals:        a SystemDictionary(lots of globals)
                deferredStartupActions:         an OrderedCollection()
                specialObjectsArray:    an Array(nil false true 
#Processor->Processor Bitmap Small...etc...
                session:        an Object
                vm:     a VirtualMachine


SmalltalkImage>>saveAs:
        Receiver: Smalltalk
        Arguments and temporary variables: 
                newNameWithoutSuffix:   'work'
        Receiver's instance variables: 
                globals:        a SystemDictionary(lots of globals)
                deferredStartupActions:         an OrderedCollection()
                specialObjectsArray:    an Array(nil false true 
#Processor->Processor Bitmap Small...etc...
                session:        an Object
                vm:     a VirtualMachine


SaveCommandLineHandler>>saveImage
        Receiver: a SaveCommandLineHandler
        Arguments and temporary variables: 
                imageName:      'work'
                oldImageFile:   File @ 
D:\Herby\Work\cinegames\towergame-backend\base.image
                oldChangesFile:         File @ 
D:\Herby\Work\cinegames\towergame-backend\base.changes
        Receiver's instance variables: 
                commandLine:    a CommandLineArguments
                session:        a WorkingSession
                stdout:         a VTermOutputDriver
                stderr:         a VTermOutputDriver


SaveCommandLineHandler>>activate
        Receiver: a SaveCommandLineHandler
        Arguments and temporary variables: 

        Receiver's instance variables: 
                commandLine:    a CommandLineArguments
                session:        a WorkingSession
                stdout:         a VTermOutputDriver
                stderr:         a VTermOutputDriver


SaveCommandLineHandler class(CommandLineHandler class)>>activateWith:
        Receiver: SaveCommandLineHandler
        Arguments and temporary variables: 
                aCommandLine:   a CommandLineArguments
        Receiver's instance variables: 
                superclass:     CommandLineHandler
                methodDict:     a 
MethodDictionary(#activate->SaveCommandLineHandler>>#activate #sa...etc...
                format:         65540
                layout:         a FixedLayout
                instanceVariables:      nil
                organization:   a ClassOrganization
                subclasses:     nil
                name:   #SaveCommandLineHandler
                classPool:      a Dictionary()
                sharedPools:    an OrderedCollection()
                environment:    a SystemDictionary(lots of globals)
                category:       #'System-BasicCommandLineHandler'
                traitComposition:       {}
                localSelectors:         nil


[ aCommandLinehandler activateWith: commandLine ] in 
PharoCommandLineHandler(BasicCommandLineHandler)>>activateSubCommand:
        Receiver: a PharoCommandLineHandler
        Arguments and temporary variables: 
                aCommandLinehandler:    SaveCommandLineHandler
        Receiver's instance variables: 
                commandLine:    a CommandLineArguments
                session:        a WorkingSession
                stdout:         a VTermOutputDriver
                stderr:         a VTermOutputDriver


BlockClosure>>on:do:
        Receiver: [ aCommandLinehandler activateWith: commandLine ]
        Arguments and temporary variables: 
                exception:      Exit
                handlerAction:  [ :exit | ^ self handleExit: exit for: 
aCommandLinehandler ]
        Receiver's instance variables: 
                outerContext:   
PharoCommandLineHandler(BasicCommandLineHandler)>>activateSubComm...etc...
                startpc:        34
                numArgs:        0


PharoCommandLineHandler(BasicCommandLineHandler)>>activateSubCommand:
        Receiver: a PharoCommandLineHandler
        Arguments and temporary variables: 
                aCommandLinehandler:    SaveCommandLineHandler
        Receiver's instance variables: 
                commandLine:    a CommandLineArguments
                session:        a WorkingSession
                stdout:         a VTermOutputDriver
                stderr:         a VTermOutputDriver


PharoCommandLineHandler(BasicCommandLineHandler)>>handleSubcommand
        Receiver: a PharoCommandLineHandler
        Arguments and temporary variables: 
                handlers:       an OrderedCollection(SaveCommandLineHandler)
        Receiver's instance variables: 
                commandLine:    a CommandLineArguments
                session:        a WorkingSession
                stdout:         a VTermOutputDriver
                stderr:         a VTermOutputDriver


PharoCommandLineHandler(BasicCommandLineHandler)>>handleArgument:
        Receiver: a PharoCommandLineHandler
        Arguments and temporary variables: 
                aString:        'save'
        Receiver's instance variables: 
                commandLine:    a CommandLineArguments
                session:        a WorkingSession
                stdout:         a VTermOutputDriver
                stderr:         a VTermOutputDriver


[ self
        handleArgument:
                (self arguments
                        ifEmpty: [ '' ]
                        ifNotEmpty: [ :arguments | arguments first ]) ] in 
PharoCommandLineHandler(BasicCommandLineHandler)>>activate
        Receiver: a PharoCommandLineHandler
        Arguments and temporary variables: 

        Receiver's instance variables: 
                commandLine:    a CommandLineArguments
                session:        a WorkingSession
                stdout:         a VTermOutputDriver
                stderr:         a VTermOutputDriver


BlockClosure>>on:do:
        Receiver: [ self
        handleArgument:
                (self arguments
                        ifEmpty: [ '' ]
                        ifNotEmpty: [ :arguments |...etc...
        Arguments and temporary variables: 
                exception:      Exit
                handlerAction:  [ :exit | ^ self handleExit: exit ]
        Receiver's instance variables: 
                outerContext:   
PharoCommandLineHandler(BasicCommandLineHandler)>>activate
                startpc:        49
                numArgs:        0


PharoCommandLineHandler(BasicCommandLineHandler)>>activate
        Receiver: a PharoCommandLineHandler
        Arguments and temporary variables: 

        Receiver's instance variables: 
                commandLine:    a CommandLineArguments
                session:        a WorkingSession
                stdout:         a VTermOutputDriver
                stderr:         a VTermOutputDriver


PharoCommandLineHandler>>activate
        Receiver: a PharoCommandLineHandler
        Arguments and temporary variables: 

        Receiver's instance variables: 
                commandLine:    a CommandLineArguments
                session:        a WorkingSession
                stdout:         a VTermOutputDriver
                stderr:         a VTermOutputDriver


PharoCommandLineHandler class(CommandLineHandler class)>>activateWith:
        Receiver: PharoCommandLineHandler
        Arguments and temporary variables: 
                aCommandLine:   a CommandLineArguments
        Receiver's instance variables: 
                superclass:     BasicCommandLineHandler
                methodDict:     a 
MethodDictionary(#activate->PharoCommandLineHandler>>#activate #c...etc...
                format:         65540
                layout:         a FixedLayout
                instanceVariables:      nil
                organization:   a ClassOrganization
                subclasses:     nil
                name:   #PharoCommandLineHandler
                classPool:      a Dictionary()
                sharedPools:    nil
                environment:    a SystemDictionary(lots of globals)
                category:       #'System-CommandLineHandler'
                traitComposition:       {}
                localSelectors:         nil


[ super activateWith: aCommandLine ] in PharoCommandLineHandler 
class>>activateWith:
        Receiver: PharoCommandLineHandler
        Arguments and temporary variables: 
                aCommandLine:   a CommandLineArguments
        Receiver's instance variables: 
                superclass:     BasicCommandLineHandler
                methodDict:     a 
MethodDictionary(#activate->PharoCommandLineHandler>>#activate #c...etc...
                format:         65540

Reply via email to