[JIRA] Commented: (SVC-4984) PosJump broken in some server 1.32 regions

Andrew Linden (JIRA) no-reply at lindenlab.cascadeo.com
Mon Nov 9 13:53:10 PST 2009


    [ http://jira.secondlife.com/browse/SVC-4984?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=145579#action_145579 ] 

Andrew Linden commented on SVC-4984:
------------------------------------

I had claimed in my office hours that the most recent break on posjump was not my fault, but I was mistaken.  I discovered it was my fault when I started debugging the problem.

The details:

I had added some code that would enforce that objects not get too deep underground.  The too deep underground rules were already enforced during the load stage of the save/load cycle a region, and I had added them for movements in general.

The API of the method that checked for depth underground did some math that was susceptible to floating point error if the object's current position was very large, and PosJump happens to exploit a Not-a-Number (NaN) bug in our LLVector3, so it would tickle this new bug.  The result was that the location of the underground check would happen far from where the true destination would be, and in some regions this happened to be deep inside a hill and so one of the four position movements would fail.

I fixed the math to be resilient to floating point error and the problem went away.

Please be aware: the plan is to eventually break PosJump, but not until we have a script call that provides the long jump functionality.  PosJump will eventually break -- don't rely on it.

> PosJump broken in some server 1.32 regions
> ------------------------------------------
>
>                 Key: SVC-4984
>                 URL: http://jira.secondlife.com/browse/SVC-4984
>             Project: 2. Second Life Service - SVC
>          Issue Type: Bug
>          Components: Scripts
>    Affects Versions: 1.32 Server
>         Environment: Second Life 1.24.4 (2916) Oct 22 2009 08:50:18 (CommunityDeveloper)
> Release Notes
> Built with GCC version 40302
> You are at 255697.0, 255430.3, 20.8 in Sandbox Goguen located at sim4906.agni.lindenlab.com (216.82.27.117:13001)
> Second Life Server 1.32.0.136920
> Release Notes
> CPU: AMD Athlon(tm) 64 X2 Dual Core Processor 5000+
> Memory: 2022 MB
> OS Version: Linux 2.6.27.29-0.1-default #1 SMP 2009-08-15 17:53:59 +0200 i686
> Graphics Card Vendor: NVIDIA Corporation
> Graphics Card: GeForce 8600 GTS/PCI/SSE2/3DNOW!
> OpenGL Version: 2.1.2 NVIDIA 173.14.18
> libcurl Version: libcurl/7.16.4 OpenSSL/0.9.7c zlib/1.2.3 c-ares/1.4.0
> J2C Decoder Version: OpenJPEG: 1.3.0, Runtime: 1.3.0
> Audio Driver Version: OpenAL, version 1.1 / OpenAL Community / OpenAL Soft: ALSA Software on default
> LLMozLib Version: [LLMediaImplLLMozLib] - 2.01.27996 (Mozilla GRE version 1.8.1.18_0000000000)
> Packets Lost: 185/197113 (0.1%)
>            Reporter: Kaluura Boa
>            Assignee: Andrew Linden
>             Fix For: 1.32 Server
>
>         Attachments: posJump.lsl
>
>
> Despite the half-promises from some Lindens, PosJump is now broken on server 1.32 and no official alternative is available.
> Put the attached script 'posJump.lsl' in a box and click it.
> {code:title=posJump.lsl}
> wiki_safe_posJump(vector target_pos)
> {
>     // An alternative to the warpPos trick without all the overhead.
>     // Trickery discovered by Uchi Desmoulins and Gonta Maltz.
> 	// More exact value provided by Fake Fitzgerald.  
>     // Safe movement modification provided by Alias Turbo.
>     vector start_pos = llGetPos();
>     llSetPrimitiveParams([PRIM_POSITION, <1.304382E+19, 1.304382E+19, 0.0>, 
> 						PRIM_POSITION, target_pos, 
>                         PRIM_POSITION, start_pos, 
> 						PRIM_POSITION, target_pos]);
> }
> default
> {
>     state_entry()
>     {
>     }
>     touch_start(integer total_number)
>     {
>         vector start = llGetPos();
>         wiki_safe_posJump(start + <0.0, 0.0, 2000.0>);
>         llSleep(0.5);
>         llOwnerSay((string)llGetPos());
>         wiki_safe_posJump(start);
>         llSleep(0.5);
>         llOwnerSay((string)llGetPos());
>         llSleep(5.0);
>         llDie();
>     }
> }
> {code}
> The box should jump 2000 meters and come back. It makes the first jump but only moves 10 meters down.
> [2:28]  Object: <211.53320, 198.01570, 2020.28200>
> [2:28]  Object: <211.53320, 198.01570, 2010.28200>
> The only alternative we have now is the memory hungry WarpPos. I don't think this "fix" goes in the right direction when it comes to reduce the memroy used by scripts.
> ----
> h4. Known regions effected:
> Sandbox Goguen
> Hurriyet

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.secondlife.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the Jira-notify mailing list