User:Saijanai Kuhn/Mono issues
proposal to start work on LSL3
- Freeze (mostly or totally) LSL2 development where it is now and start adding new features and syntax in a mono-VM-only, backwards compatible LSL3 language.
Stryfe has started a page for LSL3
- Please contribute to the LSL3 discussion page first, so we can keep the article looking nice and clean.
Sortable Table referring to the mono-beta meta issues: SVC-1276
This is a sortable table of the jira bugs mentioned in the meta issue for the mono beta:
It's an example of what I was talking about in this jira (Please vote for it if you agree with me):
An entry-form for entering a stack-trace or other mono error message would make the table-creation fully automated, though it would still need tweaking by hand. ANother useful thing would be an explanation of what the error messages mean.
Last update: 10:42 AM, 12 Mar 2008
|Wiki Number||First line of debug message or dialog||Title||Description|
|SVC-1311||~||Mono: Multiple RunTime errors when attempting to run the QA HUD|
|SVC-1312||~||Mono: old scripts in attachments fail to run.|
|SVC-1313||~||Mono: Mono & LSL2 scripts in one object exhibit misleading behavior||No warning about unrecognized bytecode. One 'Hello Avatar', as excpected. Able to reset the scripts in the prim, one should fail but doesnt. A variation of this with a linked set also allows the Mono prims to 'reset' with the others in the linked set. The Mono scripts do not, in fact, reset. Also, the Mono prims can be set to running in an lsl2 region under these conditions, however they in fact do not get set to running.|
|SVC-1315||~||Mono: Resetting a Mono script in a Second Life Server region throws the wrong exception||Error popup has wrong text. It reads: "Not able to perform 'recompilation'. Select an object with a script."|
|SVC-1317||UThread injection failed||Mono: UThread Injection Failed: llTakeCamera||It turns out this is a deprecated function and is not necessary in my script. There should be a better error message if deprecated functions will not be supported in mono.|
|SVC-1319||Assemble to CLI failed. Please try again later||Mono: http_response event broken||Compile of the below snippet fails with error: "Assemble to CLI failed. Please try again later." The same script works and runs fine in LSL.|
|SVC-1320||~||Mono Beta: Unable to test boat scripts, as the four Mono enabled sandboxes are waterless|
|SVC-1321||System.InvalidOperationException: Operation is not valid due to the current state of the object||Mono beta: "Operation is not valid due to the current state of the object" upon MONO compile.||This happens just after the script starts reading the notecard. The problem seems related to animOverride(), or the permissions event or function, however I'm not too sure. I'm having difficulty pinpointing the exact point of error, as so much as commenting out instances of animOverride(); seems to crash sims rather consistently.|
|SVC-1323||~||Mono: llPlaySound / llTriggerSound fail||Both llPlaySound and llTriggerSound fail when called with either a sound's key or name, both while its in or out of the object's contents.|
|SVC-1324||Object: Script run-time error||Mono Beta: Functions within a function that returns a vector crash the script|
|SVC-1325||Object: Script run-time error||Mono: negation of vector or rotation causes runtime error|
|SVC-1326||~||Mono: llGetFreeMemory quirks.||llGetFreeMemory seems to only report 16k free memory for mono scripts, even though they are supposed to have 64k free space. My test script seems to indeed be able to store 60K of data or so.|
|SVC-1327||UThread injection failed||Mono: UThread Injection Failed: llHTTPRequest||I can't compile following script in mono.
(shows 'UThread injection failed' dialog)
|SVC-1328||UThread Injection Failed||UThread Injection Failed: Returning from a function on an alternate logic branch with no return value, when one is expected|
|SVC-1329||Object: PSYS error: rule 14 error, PSYS_SRC_TARGET_KEY needs key data||Various particle bugs when converting an lsl2 particle script to mono||errors (occurred separately on different scripts) when changing a standard lsl2 script with particle controls to mono, occurred on every particle based script I tried this with) In at least one case script began to work correctly then stopped giving the error in error console.|
|SVC-1330||~||Mono: Typecasting to boolean inconsistent between Mono and LSL||In LSL, ZERO_VECTOR, ZERO_ROTATION, NULL_KEY, "" (null string) and  (null list) all evaluate to boolean FALSE; in Mono they all evaluate to TRUE.|
|SVC-1331||Object: Script run-time error||Mono: Floating point fed to conditional causes error|
|SVC-1334||~||Mono beta: When using llSetObjectDesc or llSetObjectName, the "|" (pipe) symbol get converted to a "?" symbol.||The "|" symbol gets converted into a "?" when you use llSetObjectDesc or llSetObjectName.|
|SVC-1335||~||Mono beta: integer *= float difference||LSL permits integer *= float and evaluates it at run-time, rounding off the result before assigning it to the integer variable.|
|SVC-1336||~||Mono Beta: Control inputs not acting properly||In my vehicle script, I have the left mouse button mapped to a specific vehicle capability. When the mouse button is held down, the vehicle will rotate along the Z axis, when the mouse button is released, the vehicle is supposed to return back to it's default banking behavior...The system does not seem to be detecting the release of the mouse button. Unchecked the MONO box to compile on the older LSL VM and worked perfectly as it was intended.|
|SVC-1337||~||MONO: Null Key test returns True||The key reported by llOwnerSay is correct in both LSL and Mono bytecode, but the logical test always returns True in Mono. To get the code working correctly, I had to change the test to an explicit check against NULL_KEY, thus:|
|SVC-1340||~||Mono: llXorBase64StringsCorrect() will not compile. llXorBase64Strings() does.||Mono: llXorBase64StringsCorrect() will not compile. llXorBase64Strings() does.|
|SVC-1341||~||Mono beta: Surprising optimization - loop over call to empty function|
|SVC-1342||~||Mono: Boolean AND (&&) and Boolean OR (||) were incorrectly mapped to the bitwise operators.||The && and || operators (Boolean AND and Boolean OR respectively) have been mapped to the bitwise operators. This can result in code that does not work properly when the operands are not pure booleans. What is the point in having separate operators if they do the same thing.|
|SVC-1343||Script run-time error||Mono Beta: Elaborated script run-time error message|
|SVC-1344||~||MONO Beta Grid Crashes||Running the attached script under mono crashes the sim 100% Have not isolated the offending function yet.|
|SVC-1345||UThread injection failed||Mono beta - UThread injection failed - llReleaseCamera||llReleaseCamera causes UThread injection error|
|SVC-1346||~||Mono beta - string to integer casting provides different results on Mono and LSL||if a string has non-numeric characters in it, MONO does not return integer value at start of string|
|SVC-1347||~||Mono Beta: Scripts stop running silently after sim border crossing||I have seen that some mono compiled scripts in an attachment silently stop running after a sim border crossing.|
|SVC-1349||System.NullReferenceException: Object reference not set to an instance of an object||Mono beta: System.NullReferenceException with certain constellation|
|SVC-1350||~||Mono: List length hack no longer works||This is from a function written by Strife Onizuka; I don't know how widely it's used, and never worked out how it works under LSL, but it no longer does in Mono:|
|SVC-1352||~||Mono beta - scripts appear to not be limited to 64k data||Following script allowed memory storage that appears to be way more than 64k of data. Touch was to verify data was actually there.|
|SVC-1353||Object: Script run-time error||Mono Beta: Broken Script Memory Constraints||It's currently possible for a variable within an event to contain apparently unlimited data.|
|SVC-1356||~||Mono Beta treats list assignments as references||Assinging one list variable to another list variable copies only the list's reference instead of creating an identical copy of the list. As a result, changes to one list affects the other. The following script demonstrates the issue:
(shows 'UThread injection failed' dialog)
|SVC-1357||~||Mono Beta: Memory Leak||Using the memory hack:
some_string = (some_string = "") + some_string...
seems to result in a memory leak within loops.
|SVC-1359||~||Failure to compile with redudant state_entry events on Mono||Scripts with more then one state_entry events in same state fail to compile in Mono. [...]Under the LSL2 VM only the last state_entry event in any given state will run, and when compiled under mono it will return an error.|
|SVC-1360||~||Mono: Lists do not retain Key type|
|SVC-1361||~||Mono Beta: Functions Missing Delay||The following functions are missing their built-in delay, reproduction is pretty straightforward. Will add others to this list at some point, building from the reference list at: http://lslwiki.net/lslwiki/wakka.php?wakka=ScriptDelay|
|SVC-1365||~||Mono beta: run_time_perms prevents listens||If a run_time_perms event just exists in a script compiled in mono, it prevents a listener (I found this from my dialog not apparently doing anything, but setting it to channel 0 did show it was outputting while not being heard). Simply say something in chat and the object should repeat it back to you, but doesn't in Mono. If you save without checking Mono or comment out the run_time_perms, the listen works properly.|
|SVC-1369||~||Mono Beta - Depending on complexity a script may be rezzed running or not||The attached script when put into an object will be rezzed either running or not running depending on if a single line is commented out. This appears to be an issue with complexity or something similar. There is plenty of memory available and it doesn't depend a lot on what line is commented out (although this has a suggested one).|
|SVC-1371||UThread injection failed||Mono: llReleaseCamera() causes "UThread injection failed".||Any script containing the llReleaseCamera() function fails at compile-time.|
|SVC-1372||Unable to upload" .. "due to the following reason: Assemble to CIL failed. Please try again later."||Mono Beta - Duplicate events in Mono script cause compilation failure, while LSL only runs the last duplicate event|
|SVC-1376||~||Mono: Does not support HexFloats for floats but it does for vectors and rotations||Example: llOwnerSay(llDumpList2String([(float)"0x1p-1",(vector)"<0x1p-1,0x1p+2,0x1p1>",(rotation)"<0x1p-3,0x1p+100,0x1.4FFFp1, 0x.4FFFp+5>"], ", "));|
|SVC-1377||~||Mono: 1.4e-45 is improperly parsed to zero by the compiler||Example: float e1 = 1.4e-45;
float e2 = (float)"1.4e-45"; llOwnerSay(llList2CSV([e1 == 0.0, e2 == 0.0, e1 == e2]));
|SVC-1378||~||Mono: NaN handling is strange||Example: float n = 0.0 / 0.0;
|SVC-1379||~||8 or more functions/event handlers in a script causes llRequestPermissions to Fail||8 or more functions/event handlers causes the listen() event handler to be entered rather than the run_time_permissions() event handler. Varying ratios of event handlers/ functions seems to not matter, it always occurs at the magic number 8 or above.|
|SVC-1388||~||Casting ZERO_VECTOR to boolean doesn't map to FALSE (as in previous lsl)|
|SVC-1393||~||Mono Beta - llRemoteLoadScriptPin can cause brief sim performance drop||If I use llRemoteLoadScriptPin on several prims (let's say 9), I will see a drop in sim performance for about a second. Time dilation goes down to somewhere from 0.71 to 0.91.
It doesn't seem to matter whether I have llOwnerSay() in or not, and it still happens even if I comment the llSetRemoteScriptAccessPin(0) at the start of the Updateme script.
|SVC-1397||~||Mono Beta - Some unicode characters shown differently between LSL and Mono|
|SVC-1398||~||Mono beta - link messages are 2 times slower under mono||Put the following two scripts in the same prim. Under mono they exchange about link 22 messages per second. Under the old VM they exchange about 44 messages per second.|
|SVC-1399||~||Mono: Inconsitant handling of negative zero, typecast to string behavior has changed|
|SVC-1400||~||Mono: Setting HTTP_BODY_MAXLENGTH||Out of scope of mono beta project. Reopen at later date|
|SVC-1402||~||Mono beta: typecasting string to integer/float of strings with non-numerical characters resolves to 0||Typecasting a string value ending with non-numerical characters in LSL2 will resolve and return the numerical part.
In mono it resolves to 0
|SVC-1403||~||Mono beta: llRemoteLoadScriptPin start param allways 0.||If you llRemoteLoadScriptPin a script with state running=true and start_param != 0, llGetStrartParameter() returns 0 anyway. This happens on Mono beta sims, if the script is compiled as mono as well as lsl2!|
|SVC-1409||~||Mono beta: llUnescapeURL crash||from resident: Ashrilyn Hayashida
For some reason llOwnerSay(llUnescapeURL("%8")); crashes Sandbox Wanderton MONO.. I tried compiling it in LSL mode last time, however... I am unsure if that crashed it or not. I compiled it in LSL, then tried in Mono. Then it gave me an asset upload error or somesuch and told me to try again later.
|SVC-1411||Script run-time error System.ArithmeticException: Overflow or underflow in the arithmetic operation.||Mono: Reimergence of SL-31252|
|SVC-1414||Script run-time error. System.NullReferenceException: Object reference not set to an instance of an object||Mono: llBase64ToString does not work properly|
|SVC-1417||~||Selecting object(s) and Tools->Recompile To Mono doesnt work, takes infinite time||Incorrect and misleading information using that feature. I have a linked-set with many scripts on each components (xytext components on each piece). trying to do that seems taking an innatural time and at the end it is not really done. So I had to go manually script by script.|
|SVC-1418||~||Mono beta: Script disconnects viewer from sim, leaving avatar ghosted||When compiled with Mono then worn in an attachment, this script will disconnect the viewer from the sim, leaving the avatar ghosted.|
|SVC-1421||run-time error Donation Box: System.InvalidProgramException: Invalid IL code in LSL_0a331708_ce87_231f_2701_e40594700fa9:test (): IL_000d: nop||Mono: Code after unconditional function return causes compile error or run-time error||Certain ll* function calls, placed after an unconditional return in a function result in a "UThread injection failed" message. Not all functions do. Other code after a return causes a run-time error. Possibly related to SVC-1328. Examples (assume the same default state and state_entry event for each example):|
|SVC-1422||~||Mono: llHTTPRequest calls not going through.||Pretty straightfoward -- requests from llHTTPRequest() are not getting through to the remote server. I checked in LSL to be sure I was in an HTTP-enabled region, and the request went through with no problem.|
|SVC-1445||script runtime error||script run time error in automatically rezzed component||I have an object named "cylinder builder", which functions correctly when recompiled under mono.
However this "cylinder builder" rezzes an object that it contains in its inventory (the "Cylinder part").
This cylinder part's script fails when recompiled under mono with a "script runtime error" plus a traceback.
|SVC-1447||~||Mono: llGetFreeMemory() can return negative result||NOTE: This repro does not show the error 100% of the time, but I have seen a negative result from llGetFreeMemory over 20 times using this.
Please post a comment if you are able to reproduce it.
|SVC-1448||~||List operations have side effects in Mono||List operations suddenly have side effects in Mono|
|SVC-1451||Script run-time error System.Reflection.TargetParameterCountException: Number of parameter does not match expected count.||Mono BetaL Chopper Hoverboard from Ben Linden with Mono compiled scripts, cant handle sim crossing. Script run in script error, also release button not working||When riding the Chopper Hoverboard from Ben Linden with mono compiled script, sim crossing will result in the following error (not all the time).|
|SVC-1452||~||Mono: Float constant parsing in the compiler is Wrong||The Mono compiler improperly parses floats resulting in value corruption. This behavior is not exhibited in LSO, LSLEditor or at Mono runtime. The algorithm in the Mono compiler used to parse constant floats is inferior.|
|SVC-1483||Script run-time error System.NullReferenceException: Object reference not set to an instance of an object||*NOW* http_request seems to do something, but http_response is crashing as described.|
|SVC-1515||~||MONO Beta: Searching multiple lists with llListFindList appends the lists|
|SVC-1530||Object: System.OverflowException: Value too large or too small||MONO Beta: System.OverflowException with an integer outside of range|
|SVC-1691||[13:16] TestRental: Script run-time error [13:16] TestRental: System.ArgumentException: Invalid sequence in conversion input Parameter name: string||llMessageLinked: System.ArgumentException: Invalid sequence in conversion input|
|SVC-1694||Object: Script run-time error [17:27] Object: System.InvalidProgramException: Invalid IL code in LSL_830fff3c_02e4_573f_1ff4_69ba8bc0633f:defaulthttp_response (string,int,System.Collections.ArrayList,string): IL_000b: call 0x0a000008||HTTP_METHOD "GET" causes mono exception||The attached script causes a failure when the http_response event fires. Removing the "if (request_id == requestId)" condition avoids the failure, so it appears the error involves the comparison of the keys and not the request itself.|
|SVC-1697||~||Dataserver request test fails.||A simple script testing a dataserver request fails under mono.|
|SVC-1707||Mono vm error message is: Sitter: System.InvalidProgramException: Invalid IL code in LSL_979e6baf_8a12_dcc0_ee61_ec67378729d2:playAnim (LindenLab.SecondLife.Key): IL_00c0: call 0x0a000008||This script, a simple play animation script works with lsl vm but fails under mono vm after the touch start:|
|SVC-1720||10:50] Object: Script run-time error [10:50] Object: System.InvalidProgramException: Invalid IL code in LSL_80e567d4_dab8_bf12_90ad_473f6c0107c0:defaultstate_entry (): IL_00b6: call 0x0a000007||Mono Beta - Equality test of 2 keys causes InvalidProgramException|
|SVC-1766||~||Mono beta: Event handlers that take keys do not work.||It appears that event handlers do not receive any mesages if they have a parameter that is a key. This is the underlying cause of several open bugs.|
|SVC-1768||System.InvalidProgramException: Invalid IL code in LSL_2a2a44b3_f01e_6e65_0ba9_97f833256a4d:defaultdataserver (string,string): IL_01b0: call 0x0a00000b||Compiling two or more scripts in a single prim may result in an invalid program exception||I tested with a variety of different scripted devices and could discern no specific pattern relating to code content other than two or more scripts in a single prim. Compiling the scripts alone doesn't cause problems and this can occur with scripts that don't interact with link messages or listens. I wish I could provide more specific details but I've been unable to pin down anything more specific yet.|
|SVC-1697||~||Dataserver request test fails.||A simple script testing a dataserver request fails under mono.|
|SVC-1707||System.InvalidProgramException: Invalid IL code in LSL_979e6baf_8a12_dcc0_ee61_ec67378729d2:playAnim (LindenLab.SecondLife.Key): IL_00c0: call 0x0a000008||Keys cause invalid IL exceptions.||This script, a simple play animation script works with lsl vm but fails under mono vm after the touch start:|
|SVC-1770||~||Mono: Key value assignment with global declare causes script to not run||Assigning a value to a key in a global declare prevents the script from executing at all:|
|SVC-1772||System.InvalidProgramException: Invalid IL code in LSL_2d835e04_fee6_b208_4a1e_e1549c71e776:defaultstate_entry (): IL_004a: stfld 0x04000001||Mono: Assigning a literal value to a key causes an exception|
|SVC-1776||UThread injection failed||Mono Beta: Comparing key gives an exception or UThread injection error||It seems that if you put a key variable into an if statement without comparing it against anything else, you will not be able to compile and instead recieve the error message "Unable to upload [path snipped] due to the following reason: UThread injection failed. Please try again later."|
|SVC-1777||Script run-time error||mono script engine: money( ) event does not recieve key of giver. script crashes||In mono beta refresh 4 ( http://blog.secondlife.com/2008/03/07/mono-beta-refresh-4/ ), using the mono script engine, the money() event does not receive the key of the giver. Attempting to parse the missing key, inside the money() event, causes script exception and crash. this same script works fine when compiled without mono.|
|SVC-1811||~||Mono Beta: if (key) causes uthread injector failure|