https://bugzilla.wikimedia.org/show_bug.cgi?id=48393

       Web browser: ---
            Bug ID: 48393
           Summary: Reusing object references for module variables
                    sometimes results in "Fatal exception of type
                    ScribuntoException" (Linux) or "The interpreter exited
                    with status 1" (Windows)
           Product: MediaWiki extensions
           Version: master
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Severity: normal
          Priority: Unprioritized
         Component: Scribunto
          Assignee: [email protected]
          Reporter: [email protected]
                CC: [email protected], [email protected],
                    [email protected]
    Classification: Unclassified
   Mobile Platform: ---

(Note: I do not fully understand the defect, so I will try to detail as much as
possible. My apologies in advance for the length.)

-------
Summary
-------
Scribunto allows creation of invalid scripts that will fail when invoked. The
invalid script appears to be related to reusing object references for module
variables:

    local colors = {}

    do
      local FRA = {val = 1}
      colors.FRA = FRA
      colors.MTQ = FRA
    end

    p.colors = colors


------------
Reproduction
------------
* Create a module called "Module:Infobox_road/color"

* Copy the latest version from enwiki:
http://en.wikipedia.org/w/index.php?title=Module:Infobox_road/color&oldid=552689438

* Go to any page and run the following
{{#invoke:Infobox_road/color|color}}

On Linux, "Fatal exception of type ScribuntoException" is generated
On Windows, "The interpreter exited with status 1" is generated
On http://en.wikipedia.org/w/index.php?title=Wikipedia:Sandbox&action=edit,
"'background:#cedff2;'" is generated.


----------
Workaround
----------
* Find the following section in the above script
    colors.FRA = FRA
    colors.MTQ = FRA

* Delete the line "colors.MTQ = FRA"

* Rerun the #invoke. The page will now generate "'background:#cedff2;'". 


-----
Notes
-----
* The Infobox_road/color module can be reduced to the following
    local p = {}

    local colors = {}

    do
      local FRA = {val = 1}
      colors.FRA = FRA
      colors.MTQ = FRA
    end

    p.colors = colors

    function p.color(frame)
      return 'color_val'
    end

    return p

This will generate the same error. Removing "colors.MTQ = FRA" will fix the
issue

* I do not know why I get different error messages on both machines. They are
both running MediaWiki 1.21 on PHP 5.4 with the latest master of Scribunto (as
of today). If this cannot be reproduced, please let me know your version of
MediaWiki / Scribunto / PHP / OS and I will try to reproduce with it.

* I do not know why http://en.wikipedia.org does not fail when invoking the
same. My best guess is that there may be some version discrepancy with English
Wikipedia in either Lua or Scribunto.

-- 
You are receiving this mail because:
You are the assignee for the bug.
You are on the CC list for the bug.
_______________________________________________
Wikibugs-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikibugs-l

Reply via email to