<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Hi Niko,</div><div><br></div><div>I'm intrigued - do you have a goal or are you just trying to see how far you can bend Self before it breaks? :)</div><div><br></div><div>I tried it myself and the VM didn't crash per se but the gui froze and I got a stack overflow:</div><div><br></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">*** Stack Overflow!!<br>#0 (/Users/russellallen/self/release/../objects/core/errorHandling.self:316): undefinedSelector:Receiver:Type:Delegatee:MethodHolder:Arguments: = ( | self* = <0>. :sel = 'reflect:'. :rec = <0>. :msgType = 'implicitSelf'. :del = nil. :mh = nil. :args = <1>. |  <br>            forwardSend: 'undefined' Selector: sel Receiver: rec Type: msgType<br>              Delegatee: del MethodHolder: mh Arguments: args <br>              IfSucceed: [|:res| ^res ].<br>            suspendAndTrace: <br>                (((((processErrors undefinedSelector copy<br>                    receiver:     rec)<br>                    selector:     sel)<br>                    type:         msgType)<br>                    delegatee:    del)<br>                    methodHolder: mh)<br>                    arguments:    args.<br>            errorContinueValue )<br><br><br>#1 (<error>:1): reflect: = ( | self* = <0>. :arg1 = <0>. delegatee = nil. selector = 'reflect:'. | <br>"undefined selector error;<br>this method was automatically generated by the VM."<br> )<br><br><br>#2 (/Users/russellallen/self/release/../objects/core/errorHandling.self:238): forwardSend:Selector:Receiver:Type:Delegatee:MethodHolder:Arguments:IfSucceed: = ( | self* = <0>. :prefix = 'undefined'. :sel = 'reflect:'. :rec = <0>. :msgType = 'implicitSelf'. :del = nil. :mh = nil. :args = <2>. :blk = <3>. postfix = 'Selector:Type:Delegatee:MethodHolder:Arguments:'. selector <- 'undefinedSelector:Type:Delegatee:MethodHolder:Arguments:' "''". |  <br>            selector: (prefix, postfix) canonicalize.<br>            ((reflect: rec) lookupKey: selector) isEmpty ifFalse: [<br>                | performDecl = (|<br>                    canFail = false.<br>                    acceptSelector: s = (<br>                        "This is for the type inferencer."<br>                        'Selector:Type:Delegatee:MethodHolder:Arguments:' <br>                        isSuffixOf: s.<br>                      ).<br>                  |). |<br>                blk value: <br>                    rec _Perform: selector<br>                        With: sel With: msgType With: del With: mh With: args<br>            ] )</blockquote><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><br></blockquote><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">etc... etc...</blockquote><div><br></div><div>Are you on Mac or Linux?  If you are on Mac, for this sort of stuff you should start Self from the command line so you can continue if the GUI breaks.  Open Terminal.app and do "Self -s path/to/Snapshot.snap"</div><div><br></div><div>Also read the manuals on the site for hints on command line debugging.</div><div><br></div><div>What you are doing may be hard to do in an interactive way because removing slots etc isn't necessarily an atomic operation -- the system is copying the lobby to a new lobby (without globals*) and doing the equivalent of a Smalltalk #become: . -- so if I were doing this I would maybe try making the changes to the Self files and rebuilding the snapshot.</div><div><br></div><div>-Russell</div><div><br></div><div><br></div><div><br></div><div><br></div><br><div><div>On 13/08/2009, at 11:02 PM, Niko Schwarz wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="background-color: rgb(255, 255, 255); position: static; z-index: auto; "><div id="ygrp-mlmsg" style="font-size: 13px; font-family: arial, helvetica, clean, sans-serif; width: 655px; position: relative; "><div id="ygrp-msg" style="line-height: 1.22em; width: 470px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 25px; padding-bottom: 0px; padding-left: 0px; float: left; z-index: 1; "><div id="ygrp-text" style="line-height: 1.22em; font-family: Georgia; "><p style="line-height: 1.22em; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; ">Hi, so I did this. I added two slots to the lobby:<br style="line-height: 1.22em; "><br style="line-height: 1.22em; ">alternaLobby <- clone<br style="line-height: 1.22em; ">undefinedSelector: sel Type: t Delegatee: d MethodHolder: h Arguments:<span class="Apple-converted-space"> </span><br style="line-height: 1.22em; ">a = ( sel sendTo: alternaLobby WithArguments: a)<br style="line-height: 1.22em; "><br style="line-height: 1.22em; ">Then, I wanted to remove all other slots from the lobby. Removing<span class="Apple-converted-space"> </span><br style="line-height: 1.22em; ">traits works fine, but removing globals or defaultBehaviour crashes<span class="Apple-converted-space"> </span><br style="line-height: 1.22em; ">the VM. How do I find out why it crashed?<br style="line-height: 1.22em; "><br style="line-height: 1.22em; ">cheers,<br style="line-height: 1.22em; "><br style="line-height: 1.22em; ">Niko<br style="line-height: 1.22em; "></p></div><div width="1" style="line-height: 1.22em; color: white; clear: both; "></div></div></blockquote></div><br></body></html>