[Bug 26504] Runes of Magic 3.0.x: "ClientUpdater.exe" crashes sometimes during updates on MD5 checksum processing (squirrel virtual machine)

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Apr 21 14:56:19 CDT 2012


http://bugs.winehq.org/show_bug.cgi?id=26504

--- Comment #3 from Anastasius Focht <focht at gmx.net> 2012-04-21 14:56:19 CDT ---
Hello,

cleaning up my disk, hence adding some info before it gets lost (not fully
analysed).

The client uses the builtin "Squirrel" script engine/vm and small scriptlets.
The scripts can be found in a file called "vcfile.res" which is
password-protected.
The password can be easily found using a debugger -> "vcfile-dorkas629"

After unpacking the archive there will be GUI resources (.jpeg files) and
scriptlets (.nut files):

--- snip ---
$ ls -o *.nut
-r--r--r--. 1 focht   248 Apr 30  2009 BeginDlgLayer.nut
-r--r--r--. 1 focht  2810 Apr 30  2009 BeginDlg.nut
-rw-rw-r--. 1 focht 24638 Jun 29  2010 configdata.nut
-r--r--r--. 1 focht  4248 Sep 13  2009 ConfigLayout.nut
-r--r--r--. 1 focht  3724 Sep 13  2009 config.nut
-rw-rw-r--. 1 focht  4634 Oct 18  2011 flags.nut
-rw-rw-r--. 1 focht  6120 Oct 18  2011 include.nut
-r--r--r--. 1 focht  6918 Oct 15  2009 IniSliderBar.nut
-r--r--r--. 1 focht  3956 Sep 10  2009 LanguageDlgLayout.nut
-rw-rw-r--. 1 focht  4788 Oct 18  2011 language.nut
-rw-rw-r--. 1 focht  6884 Mar 15  2010 LanguageSelectDlg.nut
-rw-rw-r--. 1 focht 15276 Jun 30  2010 launcherLayer.nut
-r--r--r--. 1 focht  8940 Feb  4  2010 Launcher.nut
-rw-rw-r--. 1 focht 16152 Apr 19  2010 Main.nut
-r--r--r--. 1 focht  1274 Mar 26  2009 MessageBoxDLG.nut
-rw-rw-r--. 1 focht  1576 Mar 26  2009 MessageBoxLayout.nut
-r--r--r--. 1 focht  1392 Feb  5  2010 stringdef.nut
--- snip ---

The scriptlets are unicode.

Main.nut and Launcher.nut are probably the interesting ones.
They seem to be closely tied to win32 API (window objects, messages/pump).

Example snippet (from Main.nut):

--- snip ---
SQ.LoadModule("stringdef.nut");
SQ.LoadModule("include.nut");
SQ.LoadModule("flags.nut");

SQ.LoadModule("MessageBoxDlg.nut");
SQ.LoadModule("Config.nut");

SQ.LoadModule( "language.nut");
SQ.LoadModule("LanguageSelectDlg.nut");
SQ.LoadModule("Launcher.nut");

g_config<-Ini(config);
g_runeDevConfig<-Ini(runeDev);

class MainFrame extends FrameWnd
{
...

function Notify( msg)
{
  //print(msg.sType);  
  //

  if (msg.sType=="timer")
  {
    //
    //print(msg.pSender.GetName());  

    if (msg.pSender.GetName()=="cur_ProgressBar")
    {
      if (msg.wParam==100)
      {
        local now=VC.GetDLFileSizeNow();
        local max=VC.GetDLFileSizeMax();
        _page.CurlProgress(now,max);
        local speed=VC.GetDLSpeed();

        local listmsg=format("(%.2f KB/s) ",speed/1024);
        SetProPostMessage(listmsg);

        if (max>100 && now>0)
        {

            local par=now*100/ max;
            par=par*(50)/100.0;
            SetToTalProgressBar(par+30);
        }
      }
      if (msg.wParam==101)
      {
        local par=VC.MD5_GetPar();

        _page.CurlProgress(par,100);
      }
    }
  }
...
--- snip ---

The scriptlets itself might not really be part of the problem (could be
anything, script engine/virtual machine/runtime itself) but it's always useful
to have a high-level language view which can be partly mapped to relay trace
log/win32 API call sequences.

Regards

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list