Friday, November 13, 2009

v2.13 is out... YAY!!!

Hi Folks,

I have done a check troughout the code looking for parts which could trigger a NullException, and crash the proxy.
I have also added some checks to prevent typos from creating problems too.
So as a result, v2.13 is out. Please go get it at: http://www.4shared.com/file/151511706/1434dd55/MyProxy213.html

This is basically a bug-fix version, so everyone MUST forget the old versions and get this.
I am releasing this with source code as well.

Naughty and April, please give it a try and let me know how it goes.

If you still encounter issues, please try to give me any hint you can think of, so I can try to find where the problem is. As I said before: Devil is in the details.

Cheers,
The Borg.

44 comments:

  1. Hi same thing happened it crashed after 2 minutes of standing still here is the crash log:

    Fault bucket , type 0
    Event Name: CLR20r3
    Response: Not available
    Cab Id: 0

    Problem signature:
    P1: mynewproxy.exe
    P2: 1.0.0.0
    P3: 4afd9104
    P4: GridProxy
    P5: 0.0.0.0
    P6: 4afcc7e1
    P7: 5f
    P8: 5fb
    P9: System.NullReferenceException
    P10:

    Attached files:
    C:\Users\AprilSwift\AppData\Local\Temp\WER57FE.tmp.WERInternalMetadata.xml
    C:\Users\AprilSwift\AppData\Local\Temp\WEREACC.tmp.hdmp
    C:\Users\AprilSwift\AppData\Local\Temp\WERF835.tmp.mdmp

    These files may be available here:
    C:\Users\AprilSwift\AppData\Local\Microsoft\Windows\WER\ReportQueue\AppCrash_mynewproxy.exe_3184b9a941090e351a52eef9d88a61d18e13ed_cab_0e82f90d

    Analysis symbol:
    Rechecking for solution: 0
    Report Id: 20dd6340-cfa9-11de-a83f-00a0d5ffffae
    Report Status: 4

    ReplyDelete
  2. This comment has been removed by a blog administrator.

    ReplyDelete
  3. Ok April.
    I removed your post to protect you privacy, I will check the files and see if they point me somewhere.

    Thanks,
    The Borg.

    ReplyDelete
  4. This comment has been removed by a blog administrator.

    ReplyDelete
  5. Ok.
    Let's try to solve this for you.

    Please follow the below steps:

    1 - Download 2.13, the latest version, and try it out. I've added a lot of bug fixes to that version.
    2 - Download this Debug version: http://www.4shared.com/file/151580321/ac387bc/DebugProxy.html
    and try it out too, let me know if it also breaks.

    I looked at your logs and I see a LOT of missing packets, and this can be the origin of the issue.
    Please try out the debug proxy and let me know if the problem also happens with it.
    The debug proxy does nothing, you won't see any messages nor it will accept any commands.
    It is just a pass-thru proxy for us to find out where the problem is.

    Try these things out and let me know. We will get to the solution.

    Cheers,
    The Borg.

    ReplyDelete
  6. This comment has been removed by a blog administrator.

    ReplyDelete
  7. How do i back up my AO that i have full PERM on?

    I want to back up everything inside my AO including Animations and scripts on my hard drive so i could transfer it to my ALTS.

    IS it possible to do that with your proxy? if so how?

    Thanks so much for your help.

    April.

    ReplyDelete
  8. Hi April,

    The failure with the debug proxy is bad news.
    The debug proxy does not have any of my code on it, I just pass on the packets to LibOpenMetaverse, so whatever is happening, must be happening inside the LibOpenMetaverse code.
    Maybe it is breaking because of the network traffic being too laggy or missing packets.

    I have uploaded the regular LibOpenMetaverse proxy here: http://www.4shared.com/file/151636849/8a385b8a/OpenMVProxy.html
    Please do this: start it, go to the menu by clicking on the small icon on the top left of the screen, then select "properties", go to "layout" and make the screen buffer size height like 3000.
    After that, start your viewer and connect thru it. Same as you would do with MyProxy.
    It may of may not have the same problem, so after a few minutes, if it doesn't break, just disconnect the viewer, copy the entire content of that text window to a text file and upload it somewhere.
    From that window we may be able to find out the reason for the break.
    And if it breaks with that proxy as well, there will be not much I can do, as it is LibOpenMetaverse code.

    Let's hope for the best.

    Cheers,
    The Borg.

    ReplyDelete
  9. ok i am screwed it crashed as well :(

    Out of luck.

    Thanks so much for your kind help.

    ReplyDelete
  10. Oh. I am sorry to hear that, but in that case I can only give you a few recommendations:

    1 - Try to reduce as much as possible any "parallel" traffic, like downloads, p2p, anything that would be eating bandwidth from the SL stream.
    2 - Try another viewers, maybe a specific viewer/proxy combination will work.
    3 - This is too obvious, but, get a faster pipe.
    4 - Try running less applications simultaneously with SL and MyProxy.
    5 - Disable firewalls and antivirus softwares that may be blocking stuff.
    6 - Check this: http://help.expedient.com/broadband/mtu.shtml or search google for "Windows 7 MTU", maybe that will help.

    I will try to figure out something else that would help, but for now I can only say that I am sorry.

    We tried though.

    Cheers,
    The Borg.

    Ps.: Thanks anyway, because you helped me find another bugs while trying to find yours ... :-)

    ReplyDelete
  11. BTW... I've removed some of your postings to protect your privacy.

    Cheers,
    The Borg.

    ReplyDelete
  12. OK i am going to try it out with another a standard viewer and emeral then i'll report back.

    I did crash a few times using Neil Life standalone viewer without your proxy.

    Reporting back soon.


    Thanks again for your kind help trying to resolve my crashes.


    BTW do you know how to back up an entire AO to a local hard drive that i have FULL PERM on?

    ReplyDelete
  13. This comment has been removed by the author.

    ReplyDelete
  14. I do not crash anymore but i am now faced with another problem the /load command now no longer working

    it just shows message saying loading blah blah but my inventory has nothing that was supposed to be loaded ?


    Did you disable the load command?

    ReplyDelete
  15. Bad news:

    I got same Null Exception Crash with Emerald Viewer.

    Now going to try standard viewer.

    ReplyDelete
  16. Would it possibly work with a text viewer like Metabolt on a slow connection?

    ReplyDelete
  17. Hi April and Kyro,

    It works fine with a test client. I use it all the time with TestClient from LibOpenMV.

    Slow connection is a complicated ground. As the proxy sits in the "middle" of the stream, working "invisible", I can only shoot packets to the server, while pretending to be the client. However, if the packet is lost, I can't track it, so I can't re-transmit. Meaning that: if I lose a packet, that's it, it's gone, and both the /store and /load commands would fail (silently).

    When saving, make sure you're /saving from someone who doesn't use the "cloth protection" (Emerald viewer?), and also, when /loading try to go to a less laggy sim and /load one asset at a time.

    Remember: text clients won't consume less bandwidth. they usually consume the same as a regular one, so don't expect improvements by using a text client.

    ReplyDelete
  18. I suspect it's because i am on a dial up speed because it seems to crash a lot when my client is downloading new objects.

    I'll let you know on the 26th when i get my full speed back.

    Thanks for your helpful guide and the great proxy.

    ReplyDelete
  19. How do I use the MyProxy to log into OpenSim so as to upload the saved asset files. I tried creating a shortcut of the exe file adding in the loginuri as I would for a regular viewer but it still logged into S/L.
    Pasted this ( -loginuri http://osgrid.org:8002 -loginpage http://osgrid.org/loginscreen.php -helperuri http://osgrid.org/)in the Target box.

    ReplyDelete
  20. proxies are weird, when trying to change login uri



    number 1 reason because you are running it off the host at post 8080. Then you are trying to connect to a new port.

    ReplyDelete
  21. This comment has been removed by the author.

    ReplyDelete
  22. Check this out
    http://www.youtube.com/watch?v=tADd1ZRoNRU

    ReplyDelete
  23. Does anyone know how to backup Animations?

    I right clicked on animations to get uuid then

    sent /download command but it says access denied

    anyone could spare 30 second of your life to show us how to backup animation?

    ReplyDelete
  24. How come I can't get it to work? No matter what I type in nothing happens except for save which does save asset files.

    ReplyDelete
  25. Hi Kyro,

    To connect to OSGrid you can do like this:

    1 - start the proxy from the command line like this:
    > MyNewProxy.exe --proxy-remote-login-uri=http://osgrid.org:8002
    (yes... myproxy accepts the same command line parameters as the LibOpenMV proxy)

    2 - start your viewer with the following parameters: --loginuri=http://127.0.0.1:8080/ --loginpage http://osgrid.org/loginscreen.php --helperuri http://osgrid.org/

    That's it. You will login to the OsGrid thru MyProxy, and then will be able to load things there.

    Remember, a skin asset, for example, doesn't contain the textures, only their UUIDs, so if you just upload the asset it will be useless.
    A shape would work fine, but for any assets containing textures, you would have to upload the textures first, get the new UUID, change the asset file and then upload it.
    It is a quite complex process, way beyond the scope of this forum. But if you know how the .assets files work, you should be able to accomplish.

    I recommend using Notepad++ for all you text-editing needs.

    Cheers,
    The Borg.

    ReplyDelete
  26. Thx for the info on logging into OpenSim. Worked great.
    I uploaded a shape asset and that worked fine. For those assets needing textures, shouldn't it be possible to retexture with a new one in-world?

    ReplyDelete
  27. i am having two problems . Mainly i assume due to lack of knowledge and missing tutorials. Anyway.... " /save and /store working great no issue.

    /export still cant figure that out ( see my earlier post)

    /load ...... here nothing happens.

    I have in the folder where My Proxy.exe is the "saved asset files "

    eg
    David _Dimond_Pants .ASSET

    now in the chat box i type the following

    /load Pants David _Dimond_Pants

    nothing happens so i try

    /load Pants David Dimond

    still nothing .... do you think you can give a little more instructions for me please

    ReplyDelete
  28. Hi Diving.

    The /export command is used to export an object.
    Just rest the mouse pointer over the object you want to export, then the proxy will show its UUID and local ID.
    With the local ID you can export the object with /export and use the "Import Linkset" of a viewer to import it back.

    For the /load command ... it is just the inverse of /save. If you /save x y, then you have to /load x y.
    Example:
    /save all Mockba Borg
    then
    /load all Mockba Borg

    If you have a file called mockba_borg_skin.asset, you just type /load skin Mockba Borg, and it will import that skin.

    Cheers,
    The Borg.

    ReplyDelete
  29. mocka do it like this, plus I am currently pissed now. Go check out my 6.2 version, I gave out an improved cryocrasher that kills emerald too and all the other clients.

    plus now I saw a hole in giggling boobs that can be abused that I wish to implement in the next version.

    ReplyDelete
  30. HI Born i forgot to mention that i left my ingame name in the log file on purpose for a personal reason :)

    Dont worry about my privacy i am not that blonde.

    Thanks :)

    ReplyDelete
  31. The crasher in the 6.2 doesn't work i went into a few sims tried to crash people by clicking on cryolife kill but no one crashed even teh emerald users didn't crash.

    I dont think i am doing it right because i left x y z = 0

    i even changed them to 255 but still no one crashed.

    ReplyDelete
  32. Hey April ... you sneaky ... ;)

    Cheers,
    The Borg.

    ReplyDelete
  33. Still doesn't work for me. ^^; Not sure why. I managed to get a shape but it wasn't usable for some reason.
    Now that alt doesn't work anymore because of security issues (?? oO)

    ReplyDelete
  34. Hina, what exactly doesn't work? what happens?
    Please give me some details and examples... I went thru this with April and at the end (unfortunately) we found out that the problem was not related to the proxy, but to the LibOpenMetaverse lib itself.
    Also, if you're copying from yourself, use the LL viewer for that, as Emerald activates some clothing protection that can give you probems.
    Please post here as many details as you can get, so I can try to find out where's the issue.

    Cheers,
    The Borg.

    ReplyDelete
  35. If I do /save shape Blah Blahson for example.
    I get the asset file.
    And then I try
    /load shape Blah Blahson

    I don't get it! That's just it. And when I did get it, it wasn't usable. I don't remember the error though.
    Not sure if it's because I lag quite a bit and the packets go badabing badabong.

    I'm going to try again later to see if I can come up with some more info.

    ReplyDelete
  36. Hi Freeballer,

    I have tried to download it, and got:
    You want to download the following file:
    http://rapidshare.com/files/308854461/myproxy_fail.txt | 5 KB

    This file can only be downloaded by becoming a Premium member


    It looks like there are no more free slots now. I'll try again later to see if I can still get the file ...

    About your suggestions:

    1) search based on what? please give me more details about this idea. for now, just resting the mouse pointer over the object will make the proxy "say" its UUID and local ID.
    Once you get the local ID, you can export any object.
    This should be working fine.

    2) I thought about bulk exporting the entire attachment set of an avatar on a single file, but I didn't like to end up with small invisible ball objects used for AO's for example. So when I wrote the code, I've decided to bulk export into separate files (using the /exportall command) and then you can decide later which ones you want to keep, and which ones you want to throw away.
    About bulk exporting objects, that could be done, but as there no "selection tool" in the proxy, there would not be a nice way to present all the objects at once.
    Remember, the proxy only "sees" local IDs. If I open a combo selection with a bunch of numbers for you to select, you still wouldn't know which number represents which object.

    3) Shape backup works, I use (or have used) it for "demo shopping" all the time. Just apply a shape to yourself and give it a try. Or stand on a "demo stand" and copy yourself. If it fails, let me know.

    4) You can still "clone" yourself or someone using "emerald protection", but you have to use the "baked" option.
    There's no way to overcome that.
    There's no way to get someone's (or your) skin if "emerald protection" is in place, because in that case the other party's viewer will not send out the real texture's UUID, and a proxy can only copy what it "sees".
    Try the /save or /store commands with the "baked" option and you will see that it works, but the skin will have the clothes "baked" on it.
    This is also the reason if you /store clothes from someone who's using this protection, those clothes will not be textured.
    And this is also the reason why LL is adding "clothing protection" to their viewer in the future, so get ready to say farewell to skin/cloth cloning.

    Hope this helps. I'll take a look at the log later.

    Cheers,
    The Borg.

    ReplyDelete
  37. Hello Borg

    Great proxy and thx for the source code, I do appreciate to compile things myself :-)

    I'll give it a try to add further TestClient like functionality, it should be pretty straightforward; or do you see any caveats or have some specific hints? As far as I understand, in this case I should always work with the local ID's insted of the usual UUID's, right?

    Greetings, K-werk

    ReplyDelete
  38. Hi Borg I just wanted to say i really like the way you support your product and you actually know what you are doing.

    Thanks so much keep up the great work

    Hope your baby Borg is coming along fine and healthy :)

    Merry X Mas
    Happy new Year

    April

    ReplyDelete
  39. Hey April,

    Thanks a lot lot lot.

    Baby Borg is on the last two weeks now, about to hatch at any moment.
    Just can't wait to see the lil'geek's face.

    Hope I won't disappear from the "scene" for too long once he shows up.

    Cheers,
    The Borg.

    ReplyDelete
  40. Hey K-werk,

    First of all I have to tell you that I started working exactly with TestClient, so I wrote a few commands there first, to better understand how the packet system works.
    Only then I started migrating those commands into a proxy structure.
    Then I suggest you to study both at the same time, so you will understand what the viewer expects, and how a proxy should deliver it.

    Once you start to work with the code you will see that I basically do two things:

    1 - For some commands to be functional I have to keep track of the information being sent to the viewer and store that information on my own structures. So I have to create dictionaries to hold primitives, avatars and some more stuff like that.
    From which I am then able to export things.

    2 - For some other commands, which are transfer (session) based, I have to pretend that I am the viewer, and send out requests myself, while hiding the responses from the viewer itself, so it won't get confused by receiving packets it never asked for.
    You will see this tracking on the asset transfer and texture transfer systems I wrote.

    I've tried to comment the code as much as possible, but I write this code mostly at night when I go to bed, so don't expect much from the comments.

    The only thing that I am noticing right now is that people with slow connections may end up losing packets. Which is bad, because from the library point of view it is difficult to "re-send" a packet.
    It looks like the LibOpenMetaverse itself loses track of the packet delta, created by the difference between the number of packets sent by the viewer itself and the ones I inject, and from that point on the things just go south.

    So, if you want to improve the code, you're more than welcome to.
    Just read some considerations I made previously about sharing the findings with the rest of the community.
    You don't have to follow them strictly, but think about them as a guideline, so everyone (me included) will be able to enjoy your creations.

    I think you will get the following message:

    Am Heimcomputer sitz' ich hier
    Und programmier' die Zukunft mir

    Cheers,
    The Borg.

    ReplyDelete
  41. Hey Freeballer,

    I've just managed to download your crash log.
    Please share with us how did you manage to get that file 'cause those are great for me to troubleshoot things. It tells me exactly where the crash occurred and what caused it.

    Well, here's the deal:
    The crash reason is "Collection was modified; enumeration operation may not execute", and happened on the /exportall command.
    This is something I came thru before, I know exactly why it happens, and I have even added some code to (most of) v2.13 to prevent it to happen.
    Here's the deal:
    Everytime I receive a packet that contains information I want to store, that information is saved to a dictionary. However, in the meantime you can be exporting something, which takes some time, and the dictionary will be updated right in the middle of your export, breaking it.
    The solution for that is to (try to) obtain a "lock" to the dictionary when updating it, which I did on v2.13, and made the error go away from me, but different people log in to different SIMs with different lags, so one may be more susceptible to a problem than the others.
    Let me know if it is happening with v2.13, and I will try to double check the code and see if I forgot any other "locks".

    Don't forget to share with us how did you get that crash log. I would love if everyone who had a crash just sent me one of that. Would save us all a lot of time.

    Cheers,
    The Borg.

    ReplyDelete
  42. For any reason shape backup doesn't work for me. I shaved my own shape and loaded it after. The shape does appear in my inventory, but when I click on it to wear it I get the next message: "failed to find body part called ... in the database" I've tried with differents viewers with the same result. That happens not only with the shapes, skins too. ¿what can I do?

    ReplyDelete
  43. Many thanks for then hints, Borg. I'm no programmer, just a humble code bender from time to time :-) but I'll see what I can do.

    K-Werk auf der Autobahn ;-)

    ReplyDelete