Miniwindow goes black

Posted by Rooklion on Thu 25 Aug 2011 05:52 AM — 64 posts, 242,639 views.

#0
I'm using a set of plugins that display various information about a MUD to miniwindows. Each plugin is using a .lua snippet file which takes care of all of the functions of the miniwindows. Periodically, these miniwindows will go completely black. All of the hotspots are still there and can be clicked on, but the foreground colors are all black. The only fix seems to be a full restart of the client. As the plugins are not mine, it's necessary to try and "recreate" the issue but I cannot determine any pattern to when they go black. Examining the code it seems each time the information changes the window is just recreated. I don't understand when/how the client is getting confused so I don't know where to begin troubleshooting. Any ideas?
Australia Forum Administrator #1
There's not really enough information to go on with there. What plugins? What snippets?

Some authors, like Fiendish and Twisol, have written quite complex plugins using miniwindows. I haven't had any complaints about them going black and needing to restart the client.
USA Global Moderator #2
I've gotten a number of reports of this from people using Bast's plugins (https://code.google.com/p/bastmush/) on top of my Aardwolf package (https://code.google.com/p/aardwolfclientpackage/). My guess is that the combination has the ability to peak at a *lot* of plugin processing at random times. It did happen to me *once*, but I've never been able to reproduce it, and I don't like reporting problems before I can reproduce them because I know how difficult that is to track down and try to fix.

The one thing that stuck out to me though was that simply disabling/removing/reloading the plugins doesn't help. You actually have to shut down MUSHclient.
#3
I have had reports of it as well. But I had one user say it wasn't just my plugins. I also cannot reproduce it.

Bast
USA #4
For what it's worth, I haven't seen or heard this happen yet.
#5
Apologies, I suppose I was trying to avoid the traditional "post your bugs to the authors" response. The plugins that go black are, in fact, the ones based on Bast's miniwin.lua file. The closest I can come to a "reproduction" is anytime I'm moving rapidly along in Aardwolf from one mob to another. One miniwindow is showing the names and descriptions of the mobs in the room and another is displaying Campaign targets. They only seem to go black after many rapid changes to the contents.
#6
Rooklion said:

One miniwindow is showing the names and descriptions of the mobs in the room and another is displaying Campaign targets. They only seem to go black after many rapid changes to the contents.


What plugin shows descriptions of mobs in the room? I don't have a plugin that does that.

Bast
Australia Forum Administrator #7
It's possible some Windows resource is not being freed properly. A while ago I had a small program that, after a while, stopped drawing properly because I had used a Windows "brush" and not freed it. Eventually it ran out of brushes.

However it would help if you could reproduce with some sort of small test case.
USA Global Moderator #8
Nick Gammon said:
However it would help if you could reproduce with some sort of small test case.

If only. I've been getting complaints for a while. Every time I ask how to reproduce the problem, the answer is always
Quote:
*shrug*
:\
#9
I have created a mob database plugin based on Bast's miniwin.lua script. This one as well as the other Bastmush plugins I use go black. These include miniwin_spellup, miniwin_events.

As far as reproduction, it's extremely unpredictable when it will occur. During fast-moving CP-levelling is the only time it reliably happens.

Most recent: my mob database plugin shows the contents of the {roomchars} tag in conjunction with a "consider all" to get the mob's shortname. After checking both lists contain the same number of records, the database is searched to receive the mob's database ID #. These 3 are then written into a miniwindow. During a visit to one of the mobs in my CP it seems that the attempt to write to the miniwindow caused it to go black.

My guess is that many frequent redraws of the miniwindow is causing the blackout. Could a difference in the way Bast's miniwindows are refreshed be causing the bug?
USA Global Moderator #10
Quote:
Could a difference in the way Bast's miniwindows are refreshed be
The one time I saw it happen was not on one of Bast's plugins. I think the only thing we have is that there's a whole bunch of processing and drawing going on.
Australia Forum Administrator #11
Could you confirm whether or not this problem tends to occur after a lengthy period of time? If some resource is eventually being consumed, then a lot of activity would consume it faster. However I would still expect this sort of problem to manifest itself later, rather than sooner.

Next time it happens:

Template:summary

Please provide a summary of your world configuration:

  • Either use the scripting Immediate window (Ctrl+I) to execute: Debug ("summary")

    or

  • Install the Summary plugin (see "Summary" feature) and type "summary"

Then copy the resulting information from the output window, and paste into a Forum message.

You need version 4.55 onwards of MUSHclient to do this.

USA Global Moderator #12
I got this from a friend.

Summary:
http://pastebin.com/raw.php?i=8PYs8yuU

Screenshot:
http://i.imgur.com/qPw5z.png
Australia Forum Administrator #13
So which plugin is that black window?
Australia Forum Administrator #14
Well that's confusing. Version 4.78 is "in the wild" whereas I haven't released it yet.

In fact, remind me what change was made in that? My release notes don't show anything.
USA Global Moderator #15
Nick Gammon said:

So which plugin is that black window?

miniwin_tabwin

Nick Gammon said:

Well that's confusing. Version 4.78 is "in the wild" whereas I haven't released it yet.

In fact, remind me what change was made in that? My release notes don't show anything.
I have no idea. This particular user likes to dig through your downloads path to look for things that aren't released yet.

[EDIT] Oh, I think that's the one where I asked for help debugging listboxes. (http://mushclient.com/forum/bbshowpost.php?id=11265&page=1)
Amended on Sat 27 Aug 2011 10:15 PM by Fiendish
Australia Forum Administrator #16
I need to know which plugin, in that screenshot, was black. I'm not going to measure pixel by pixel to find it out.

Also that screenshot seems to refute the idea that resources are being consumed. Only one window is black, the rest look OK.

@whoever_downloads_custom_releases: those custom releases are designed for working with a particular developer - in this case Fiendish. They may have debugging code that makes them work less well in general than normally-released software.

[EDIT] miniwin_tabwin - ok gotcha.
Amended on Sat 27 Aug 2011 10:31 PM by Nick Gammon
Australia Forum Administrator #17
In the file miniwin_tabbar.xml?
Australia Forum Administrator #18
That plugin doesn't seem to do much except this:


function OnPluginBroadcast (msg, id, name, text)
  --local windowstuff = {}
  if id == GetPluginID() then
    return
  end
  if msg == 5000 then
    loadstring( text )()
    local winstuff = windowstuff
    if next(winstuff) then
      tabwin:enable()
      tabwin:addwtab(winstuff)
    end
  elseif msg == 5001 then
    loadstring( text )()
    local winstuff = windowstuff
    if next(winstuff) then
      tabwin:removewtab(winstuff)
    end
  end
  phelper:OnPluginBroadcast(msg, id, name, text)
end


Now, loadstring silently fails (if it fails). I would be doing:


    assert (loadstring( text )) ()

USA Global Moderator #19
Quote:
That plugin doesn't seem to do much except

If you want a more complete plugin to look at, it has also happened to someone with my health bars miniwindow (aard_health_bars_gmcp.xml)

I don't have a summary from when it happened, though.

Quote:
Only one window is black, the rest look OK.
Yeah, as far as I've been told it's generally only one miniwindow at a time. But it tends to be a different one in each report.
Amended on Sat 27 Aug 2011 11:51 PM by Fiendish
Australia Forum Administrator #20
I wonder if this is a manifestation of the race condition discussed in another thread? Try going back to version 4.75 and see if the problem goes away.
USA Global Moderator #21
Hmm. I've got another user here who can get it to happen pretty reliably just by starting MUSHclient with no other intervention. I asked him to switch to 4.75 and it still happens.

Quote:
-------------- MUSHclient summary --------------

MUSHclient version: 4.75
Compiled: Jun 12 2011.
Time now: Saturday, August 27, 2011, 10:58 PM
Operating system: Windows XP
Libraries: Lua 5.1.4, PCRE 8.12, PNG 1.5.2, SQLite3 3.7.6.3, Zlib 1.2.5
World name: 'Aardwolf', ID: e0eb198d8d5698e3b2f61483
-- Scripting --
Script language: Lua, enabled: yes
Scripting active: yes
Lua sandbox is 127 characters, DLL loading allowed: yes
Scripting prefix: '\\'. External editor in use: yes.
Editor path: C:\Program Files\Vim\vim62\gvim.exe
Scripting for: 14.592088 seconds.
-- Triggers, aliases, timers, variables --
** Triggers: 1 in world file, triggers enabled: yes. [Triggers]
1 enabled, 0 regexp, 4116 attempts, 0 matched, 0.010959 seconds.
** Aliases: 24 in world file, aliases enabled: yes. [Aliases]
23 enabled, 1 regexp, 138 attempts, 0 matched, 0.000406 seconds.
** Timers: 0 in world file, timers enabled: yes.
0 enabled, 0 fired.
Timers checked every 0.1 seconds.
** Variables: 0.
-- MCCP --
MCCP active, took 0.001829 seconds to decompress
MCCP received 10691 compressed bytes, decompressed to 117846 bytes.
MCCP compression ratio was: 9.1% (lower is better)
-- Plugins (Processing order) --
ID: 3e7dedbe37e44942dd46d264, 'GMCP_handler', (Lua, 1.151 s) Enabled [Al Va Cb]
ID: 462b665ecb569efbf261422f, 'Miniwindow_Z_Order_Monitor', (Lua, 0.001 s) Enabled [Va Cb]
ID: c293f9e7f04dde889f65cb90, 'Aardwolf_Main_Layout', (Lua, 0.068 s) Enabled [Al Va Cb]
ID: b11c1b7fe961558d6f6aba5e, 'Aardwolf_Helper_Aliases', (Lua, 0.000 s) Enabled [Al]
ID: ef4a86dbc9cd4dd6f4c69386, 'Aardwolf_Statmon', (Lua, 0.070 s) Enabled [Al Va Cb]
ID: f178e68512c685b3be1e9b07, 'Aardwolf_Group_Monitor', (Lua, 0.012 s) Enabled [Al Va Cb]
ID: ef4a86dbc9cd4dd6f4c69385, 'Aardwolf_Health_Bars', (Lua, 0.065 s) Enabled [Al Va Cb]
ID: b6eae87ccedd84f510b74714, 'Aardwolf_GMCP_Mapper', (Lua, 0.370 s) Enabled [Tr Al Ti Va Cb]
ID: 04d9e64f835452b045b427a7, 'Copy_Colour_Output', (Lua, 0.002 s) Enabled [Al]
ID: b555825a4a5700c35fa80780, 'Aardwolf_Chat_Capture_Miniwindow', (Lua, 0.627 s) Enabled [Tr Al Va Cb]
ID: 3f498d929793c12cb70fb59e, 'Aardwolf_Ascii_Mapper', (Lua, 0.012 s) Enabled [Tr Al Va Cb]
ID: e50b1d08a0cfc0ee9c44947b, 'Aardwolf_Tick_Timer', (Lua, 0.021 s) Enabled [Ti Va Cb]
ID: 60840c9013c7cc57777ae0ac, 'Aardwolf_BigMap_Graphical', (Lua, 0.094 s) Enabled [Tr Al Va Cb]
ID: abc1a0944ae4af7586ce88dc, 'Repaint_Buffer', (Lua, 0.704 s) Enabled [Cb]
ID: 9f796334ab9ed476ef44f1dc, 'Aardwolf_New_Connection', (Lua, 0.004 s) Enabled [Va Cb]
ID: 55616ea13339bc68e963e1f8, 'Aardwolf_Chat_Echo', (Lua, 0.007 s) Enabled [Tr Al Va Cb]
ID: aaa66f81c50828bbbfda7100, 'xBroadcast_CP', (Lua, 0.407 s) Enabled [Tr Al Ti Va Cb]
ID: e8520531407cb4281bea544e, 'PluginFunctions', (Lua, 0.176 s) Enabled [Al Va Cb]
ID: a7a2f5a3b1373cd99d6bfb47, 'xBastmush_Update_Checker', (Lua, 0.936 s) Enabled [Al Va Cb]
ID: d67ae331407cb4281bea544e, 'bast_hunt', (Lua, 0.163 s) Enabled [Tr Al Va Cb]
ID: eee4b4fa021c1bee534ef093, 'miniwin_events', (Lua, 0.542 s) Enabled [Tr Al Va Cb]
ID: aaa77f81c5408278ccda7100, 'xBroadcast_GQ', (Lua, 0.182 s) Enabled [Tr Al Va Cb]
ID: aaa8a9eda20fa11787c6b438, 'xBroadcast_Quest', (Lua, 0.442 s) Enabled [Al Ti Va Cb]
ID: eee9913955ee86427355ad5e, 'miniwin_moonbot', (Lua, 0.271 s) Enabled [Tr Al Va Cb]
ID: eeed33165bd63fe12e148e5d, 'miniwin_double', (Lua, 0.260 s) Enabled [Al Va Cb]
ID: aaafc15678afa22343c5a327, 'xBroadcast_Double', (Lua, 0.177 s) Enabled [Tr Al Ti Va Cb]
ID: eee0c922b56427cb80fe117e, 'miniwin_noexp', (Lua, 0.252 s) Enabled [Al Va Cb]
ID: aaa65ac8122d795ad5348dcd, 'xBroadcast_Noexp', (Lua, 0.173 s) Enabled [Tr Al Va Cb]
ID: eee90c778a44169e1e1d9585, 'miniwin_stats', (Lua, 0.546 s) Enabled [Al Va Cb]
ID: aaaf0c555a44169e0f1d9674, 'bast_spellup', (Lua, 0.823 s) Enabled [Al Va Cb]
ID: aaa72f3b5453567e2bba9d50, 'xBroadcast_SpellSkills', (Lua, 3.096 s) Enabled [Tr Al Va Cb]
ID: eeef0c555a44169e0f1d9674, 'miniwin_spellup', (Lua, 0.930 s) Enabled [Al Ti Va Cb]
ID: 59358039c72bc395fb31922e, 'PotionQuafferv2', (Lua, 0.003 s) Enabled [Tr Al Va Cb]
ID: 2a5caa1cd7dbcff665e2a23d, 'Consider_info', (Lua, 0.000 s) Enabled [Tr]
ID: 18c24130ab326dc05b49420d, 'Aardwolf_exits_detector', (Lua, 0.007 s) Enabled [Tr Al Va Cb]
ID: a749d26f1cb3e00282727e55, 'StatDB', (Lua, 0.514 s) Enabled [Al Ti Va Cb]
ID: aaa0ab9ed92f8fc614664bd1, 'xBroadcast_Level', (Lua, 0.171 s) Enabled [Tr Al Va Cb]
ID: aaa61c4570508448e19c7c14, 'xBroadcast_Kills', (Lua, 0.196 s) Enabled [Tr Al Va Cb]
ID: aaaf9a8dc92f8fc614663ac0, 'xBroadcast_Whois', (Lua, 0.189 s) Enabled [Tr Al Va Cb]
ID: aaa7dc9ed92ffc6146964abc, 'xBroadcast_Inventory', (Lua, 0.248 s) Enabled [Tr Al Va Cb]
ID: a8f5b1a3b1373cd99d6bfb47, 'StatMonitor', (Lua, 0.248 s) Enabled [Al Ti Va Cb]
ID: eee96e233d11e6910f1d9e8e, 'miniwin_tabwin', (Lua, 0.434 s) Enabled [Al Va Cb]
** Plugins: 42 loaded, 42 enabled.
-- Comms --
Connect phase: 8 (Open). NAWS wanted: NO
Received: 14045 bytes (13 Kb)
Sent: 1892 bytes (1 Kb)
Received 38 packets, sent 58 packets.
Total lines received: 319
This connection: Sent 20 lines, received 4208 lines.
Telnet (IAC) received: DO: 3, DONT: 0, WILL: 6, WONT: 1, SB: 41 [Telnet]
-- MXP --
MXP active: NO, Pueblo mode: NO, Activated: On command
MXP tags received: 0
MXP entities received: 0
MXP errors: 0
-- Commands --
Commands in command history: 5
Speed walking enabled: NO. Speed walking prefix: #
Command stacking enabled: yes. Command stack character: ';'
Accelerators defined: 1 [Accelerators]
-- Miniwindows --
Window: ' c293f9e7f04dde889f65cb90text_background', at (2,135,655,652), shown: yes
width: 653, height: 517, position: 12, hotspots: 0, fonts: 0, images: 1
Window: ' c293f9e7f04dde889f65cb90text_background_offscreen', at (0,0,0,0), shown: NO
width: 500, height: 500, position: 12, hotspots: 0, fonts: 0, images: 1
Window: ' c293f9e7f04dde889f65cb90txtdragger', at (1,133,655,143), shown: yes
width: 654, height: 10, position: 0, hotspots: 1, fonts: 0, images: 0
Window: ' c293f9e7f04dde889f65cb90txtresize', at (640,637,655,652), shown: yes
width: 15, height: 15, position: 0, hotspots: 1, fonts: 0, images: 0
Window: '3f498d929793c12cb70fb59e', at (658,81,867,324), shown: yes
width: 209, height: 243, position: 0, hotspots: 3, fonts: 2, images: 0
Window: '60840c9013c7cc57777ae0ac_offscreen_buffer', at (0,0,0,0), shown: NO
width: 100, height: 100, position: 0, hotspots: 0, fonts: 0, images: 1
Window: 'a7a2f5a3b1373cd99d6bfb47-Update', at (304,180,872,500), shown: NO
width: 568, height: 320, position: 12, hotspots: 13, fonts: 5, images: 0
Window: 'b555825a4a5700c35fa80780', at (0,0,657,131), shown: yes
width: 657, height: 131, position: 0, hotspots: 6, fonts: 2, images: 0
Window: 'b6eae87ccedd84f510b74714_mapper', at (868,108,1136,443), shown: yes
width: 268, height: 335, position: 0, hotspots: 7, fonts: 3, images: 1
Window: 'b6eae87ccedd84f510b74714_z_config_win', at (0,0,0,0), shown: NO
width: 0, height: 0, position: 0, hotspots: 0, fonts: 2, images: 0
Window: 'eee0c922b56427cb80fe117e-Noexp', at (0,0,0,0), shown: NO
width: 0, height: 0, position: 0, hotspots: 0, fonts: 2, images: 0
Window: 'eee4b4fa021c1bee534ef093-Events', at (616,342,736,386), shown: yes
width: 120, height: 44, position: 0, hotspots: 4, fonts: 5, images: 0
Window: 'eee90c778a44169e1e1d9585-Info', at (0,0,0,0), shown: NO
width: 0, height: 0, position: 0, hotspots: 0, fonts: 2, images: 0
Window: 'eee90c778a44169e1e1d9585-Stats', at (837,89,1173,115), shown: yes
width: 336, height: 26, position: 0, hotspots: 4, fonts: 5, images: 0
Window: 'eee96e233d11e6910f1d9e8e-tabwin', at (1070,534,1179,651), shown: yes
width: 109, height: 117, position: 0, hotspots: 10, fonts: 4, images: 0
Window: 'eee9913955ee86427355ad5e-Moons', at (0,0,0,0), shown: NO
width: 0, height: 0, position: 0, hotspots: 0, fonts: 2, images: 0
Window: 'eeed33165bd63fe12e148e5d-Double', at (0,0,0,0), shown: NO
width: 0, height: 0, position: 0, hotspots: 0, fonts: 2, images: 0
Window: 'eeef0c555a44169e0f1d9674-SpellUp', at (866,462,1175,488), shown: yes
width: 309, height: 26, position: 0, hotspots: 4, fonts: 5, images: 0
Window: 'ef4a86dbc9cd4dd6f4c69385', at (0,656,867,680), shown: yes
width: 867, height: 24, position: 0, hotspots: 7, fonts: 1, images: 0
Window: 'ef4a86dbc9cd4dd6f4c69386', at (658,326,867,654), shown: yes
width: 209, height: 328, position: 0, hotspots: 2, fonts: 1, images: 0
Window: 'f178e68512c685b3be1e9b07', at (868,444,1136,680), shown: yes
width: 268, height: 236, position: 0, hotspots: 2, fonts: 2, images: 0
Window: 'z_a749d26f1cb3e00282727e55-StatDB_help', at (0,0,0,0), shown: NO
width: 982, height: 590, position: 12, hotspots: 22, fonts: 6, images: 0
Window: 'z_a7a2f5a3b1373cd99d6bfb47-xBastmush_Update_Checker_help', at (0,0,0,0), shown: NO
width: 618, height: 530, position: 12, hotspots: 19, fonts: 6, images: 0
Window: 'z_a8f5b1a3b1373cd99d6bfb47-StatMonitor_help', at (0,0,0,0), shown: NO
width: 625, height: 530, position: 12, hotspots: 18, fonts: 6, images: 0
Window: 'z_aaa0ab9ed92f8fc614664bd1-xBroadcast_Level_help', at (0,0,0,0), shown: NO
width: 499, height: 515, position: 12, hotspots: 17, fonts: 6, images: 0
Window: 'z_aaa61c4570508448e19c7c14-xBroadcast_Kills_help', at (0,0,0,0), shown: NO
width: 499, height: 515, position: 12, hotspots: 17, fonts: 6, images: 0
Window: 'z_aaa65ac8122d795ad5348dcd-xBroadcast_Noexp_help', at (0,0,0,0), shown: NO
width: 499, height: 515, position: 12, hotspots: 17, fonts: 6, images: 0
Window: 'z_aaa66f81c50828bbbfda7100-xBroadcast_CP_help', at (0,0,0,0), shown: NO
width: 548, height: 515, position: 12, hotspots: 17, fonts: 6, images: 0
Window: 'z_aaa72f3b5453567e2bba9d50-xBroadcast_SpellSkills_help', at (0,0,0,0), shown: NO
width: 499, height: 530, position: 12, hotspots: 18, fonts: 6, images: 0
Window: 'z_aaa77f81c5408278ccda7100-xBroadcast_GQ_help', at (0,0,0,0), shown: NO
width: 513, height: 515, position: 12, hotspots: 17, fonts: 6, images: 0
Window: 'z_aaa7dc9ed92ffc6146964abc-xBroadcast_Inventory_help', at (0,0,0,0), shown: NO
width: 499, height: 515, position: 12, hotspots: 17, fonts: 6, images: 0
Window: 'z_aaa8a9eda20fa11787c6b438-xBroadcast_Quest_help', at (0,0,0,0), shown: NO
width: 513, height: 515, position: 12, hotspots: 17, fonts: 6, images: 0
Window: 'z_aaaf0c555a44169e0f1d9674-bast_spellup_help', at (0,0,0,0), shown: NO
width: 949, height: 634, position: 0, hotspots: 38, fonts: 6, images: 0
Window: 'z_aaaf9a8dc92f8fc614663ac0-xBroadcast_Whois_help', at (0,0,0,0), shown: NO
width: 499, height: 515, position: 12, hotspots: 17, fonts: 6, images: 0
Window: 'z_aaafc15678afa22343c5a327-xBroadcast_Double_help', at (0,0,0,0), shown: NO
width: 499, height: 515, position: 12, hotspots: 17, fonts: 6, images: 0
Window: 'z_d67ae331407cb4281bea544e-bast_hunt_help', at (0,0,0,0), shown: NO
width: 499, height: 575, position: 0, hotspots: 21, fonts: 6, images: 0
Window: 'z_e8520531407cb4281bea544e-PluginFunctions_help', at (0,0,0,0), shown: NO
width: 884, height: 620, position: 12, hotspots: 24, fonts: 6, images: 0
Window: 'z_eee0c922b56427cb80fe117e-miniwin_noexp_help', at (0,0,0,0), shown: NO
width: 499, height: 515, position: 12, hotspots: 18, fonts: 6, images: 0
Window: 'z_eee4b4fa021c1bee534ef093-miniwin_events_help', at (0,0,0,0), shown: NO
width: 499, height: 515, position: 12, hotspots: 18, fonts: 6, images: 0
Window: 'z_eee90c778a44169e1e1d9585-miniwin_stats_help', at (0,0,0,0), shown: NO
width: 569, height: 515, position: 12, hotspots: 19, fonts: 6, images: 0
Window: 'z_eee96e233d11e6910f1d9e8e-miniwin_tabwin_help', at (0,0,0,0), shown: NO
width: 499, height: 515, position: 12, hotspots: 18, fonts: 6, images: 0
Window: 'z_eee9913955ee86427355ad5e-miniwin_moonbot_help', at (0,0,0,0), shown: NO
width: 499, height: 590, position: 12, hotspots: 23, fonts: 6, images: 0
Window: 'z_eeed33165bd63fe12e148e5d-miniwin_double_help', at (0,0,0,0), shown: NO
width: 499, height: 515, position: 12, hotspots: 18, fonts: 6, images: 0
Window: 'z_eeef0c555a44169e0f1d9674-miniwin_spellup_help', at (0,0,0,0), shown: NO
width: 499, height: 530, position: 12, hotspots: 19, fonts: 6, images: 0
Window: '~~~~~~3f498d929793c12cb70fb59e:info', at (0,0,0,0), shown: NO
width: 1, height: 1, position: 0, hotspots: 0, fonts: 2, images: 0
** Miniwindows: 45 loaded, 13 shown.
-- Output window --
Output pixels: width 1176, height: 681, font width: 8, font height: 15
can show 147 characters, wrapping at column 80, height 45 lines.
Output buffer: 446 of 9999 lines.
-- Miscellaneous --
Logging: NO, tracing: NO
** SQLite3 databases: 0
Sound buffers in use: 0

---------------------- End summary ----------------------


Australia Forum Administrator #22
Which miniwindow went black?
USA Global Moderator #23
Same one. miniwin_tabwin. For this other user, it is always miniwin_tabwin that goes black.
Amended on Sun 28 Aug 2011 04:24 AM by Fiendish
Australia Forum Administrator #24
Can you get them to put the suggested "assert" in, in the two places which have a loadstring, and report what happens?
USA Global Moderator #25
Ok, will probably know the result tomorrow.
#26
Ok, my database (called Aardwolf_Database.xml) went black during a CP. I would be happy to send a private email of the file if it will help track this down. Debug("summary") is below.

http://pastebin.com/6Q4tsxy6

I only use one loadstring() in the file and it uses an assert() already.
Amended on Sun 28 Aug 2011 10:03 PM by Rooklion
#27
And 5 more mobs later, same miniwindow, restarted MUSHClient.

http://pastebin.com/dnLcNGFF
USA Global Moderator #28
Nick Gammon said:

Can you get them to put the suggested "assert" in, in the two places which have a loadstring, and report what happens?

No improvement.
#29
Update: it seems resources might be to blame. I hadn't restarted my machine in quite a long time and it seemed like I was able to get the blackout in a very short period of time. I've just restarted and have been through a few CPs so far and no blackout.
USA Global Moderator #30
Fiendish said:

Hmm. I've got another user here who can get it to happen pretty reliably just by starting MUSHclient with no other intervention. I asked him to switch to 4.75 and it still happens.
Quote:
...debug summary...


It looks now like whether this happens for this user is entirely dependent on plugin load order. Moving bast_spellup to the very end of the load list made the problem stop. Putting it back made the problem happen again. We're now trying to narrow it down a bit more.
Australia Forum Administrator #31
Checking the code for drawing the output window, it seems to me that the window is being drawn, in a sense. The output area is initially cleared to the background colour/image, and then the miniwindows and text drawn.

Now the miniwindows are basicallly "blitted" from the bitmap which is stored as the miniwindow contents. That is, from whatever it was when you last drew stuff.

So if, for some reason, it wasn't drawing certain windows you would see nothing, not a black box. That is, you would see whatever was underneath.

The fact that it has blitted in a black box tends to suggest that the miniwindow contents are wrong, for some reason. A reason along the lines of, someone did a WindowCreate, and then relied upon the window filling up with data, and it didn't.

That's why I was asking about the assert, perhaps if the drawing code hits some condition, it just stops drawing.

Now as far as I can tell, this problem isn't happening to "simple" windows (like status bars) where the window is cleared and then redrawn in easy-to-follow logic.

You could confirm this a bit by clearing the window to some sort of colour, or pattern (like a grid) initially, and then overwriting. Now if we see this colour/grid but not what is supposed to be on top of it, that supports the idea of some logic problem in the plugin.

I also wonder if in one of the libraries, some button or something is getting much larger than it should be? Maybe something that is quite small becomes negative, and that negative value is taken as "from the RH side" and then wipes out everything under it?

What you could do to narrow this down is to remove all instances of black when drawing with some other unique colours (at least for testing). So if the window becomes purple (say) and you only draw that shade of purple in one place, then you have your culprit (this includes the initial colour you clear the window to).
USA Global Moderator #32
Nick Gammon said:
The fact that it has blitted in a black box tends to suggest that the miniwindow contents are wrong, for some reason. A reason along the lines of, someone did a WindowCreate, and then relied upon the window filling up with data, and it didn't.

Given the evidence I've seen, I'm leaning more toward the miniwindow contents are wrong because they're getting put in the wrong place in memory or getting pulled from the wrong place. Here's why:

Going back to my user who can consistently reproduce the problem, I had him add the following function, activated by an alias, to the miniwin_tabbar.xml plugin.

function testFunction()
   local win = "eee96e233d11e6910f1d9e8e-tabwin"
   print(WindowRectOp (win, 2, 0, 0, 0, 0, ColourNameToRGB("green")))
   Repaint()
end


That *should* immediately make the tabbar window green. But for him it stays black. Though the print does display "0" as expected.

I had him then throw in

WindowShow(win, false)

at the end, and sure enough the black section goes away, which means that MUSHclient is drawing...SOMETHING...just not what it's supposed to be. And then when the mud sent some information and a plugin updated state, it came back. Still black.
Amended on Tue 30 Aug 2011 02:45 AM by Fiendish
Australia Forum Administrator #33
This suggests to me a bit that the internal bitmap has gone wrong. Since miniwindow operations draw to the bitmap, and then the bitmap is copied to the main window if (for some reason) it was corrupted then attempts to modify it might fail.

I'll look into it tomorrow.
Australia Forum Administrator #34
Before I look into this in a great deal of detail, what I can't get my head around is why the plugin order affects it.

Say there is a bug in miniwindows, and after 1000 WindowCreate calls it no longer works properly. OK, but why does the plugin order affect that? Whatever order things are done in, the same things will be done, right?

If someone can make a minimal example that reproduces this, that would help track it down.
USA Global Moderator #35
Quote:
Before I look into this in a great deal of detail, what I can't get my head around is why the plugin order affects it.
I don't think order causes it to happen. I think a certain plugin order may just cause it to happen sooner. Remember that for this particular user the problem manifests right away, whereas most other players require some random combination of events during gameplay before the problem occurs. I had the same user enable tracing before any plugins loaded and the problem didn't happen, which would indicate a race condition and that the output from trace changes the timing enough that the problem goes away.

Quote:
If someone can make a minimal example that reproduces this, that would help track it down.
I can't even get it to happen at all on my machine. I doubt we'll be able to produce any sort of example. :\
Amended on Wed 31 Aug 2011 07:54 AM by Fiendish
#36
I'm not sure if a larger test set is needed, but I just installed Linux as a 2nd OS and have MUSHClient running under Wine. I have so far not had a single problem with miniwindows turning black. It might be important to note that I was otherwise running Windows 7 64-bit as my other OS.
Australia Forum Administrator #37
Rooklion said:

Update: it seems resources might be to blame. I hadn't restarted my machine in quite a long time and it seemed like I was able to get the blackout in a very short period of time. I've just restarted and have been through a few CPs so far and no blackout.


It is starting to sound like some sort of Windows 7 problem. Perhaps when a process ends it doesn't free all the resources it uses?
USA Global Moderator #38
Nick Gammon said:
It is starting to sound like some sort of Windows 7 problem.
Can't be. The summary I posted says XP.
#39
Ok,something like this has now happened on my MUSHclient install with the miniwin_events window. I don't get a fully black window, I got a half drawn window. The hotspots in the window still worked whether or not that part of the window was drawn correctly. It happened within 30 minutes of me starting the client, I requested a campaign, killed a mob, and then the window got drawn incorrectly. If I reloaded the plugin, the problem happened immediately when I did "cp check". If I unload the plugin, change the id, then load the plugin again, the window was drawn correctly, but after a couple of cp mob kills, it did the same thing. If I repeated the process and converted back to the original id, the problem was still there.

Bad Image: http://i.imgur.com/9uIvi.png
Good Image: http://i.imgur.com/X5CwM.png

Here is what top showed:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5263 endavis 20 0 2686m 97m 14m S 11 2.5 3:19.39 MUSHclient.exe

I also had over a gig of RAM free.
Wine: 1.3.27.20110909-1.1
Opensuse 11.4

Here is my plugins command, which shows how much memory my plugins are using according to collectgarbage('count')


PluginFunctions v6.1 Plugins List
-----------------------------------------------
Name                          Vers  Cmd/Short Debug   Enabled   Mem Usage (KB)
-----------------------------------------------------------------------
Aardwolf_BigMap_Graphical     3.00                    true                
Aardwolf_Chat_Capture_Miniwindow2.00                    true                
Aardwolf_Chat_Echo            1.00                    true                
Aardwolf_GMCP_Mapper          2.00                    true                
Aardwolf_Group_Monitor        2.00                    true                
Aardwolf_Health_Bars          2.00                    true                
Aardwolf_Helper_Aliases       1.00                    true                
Aardwolf_Main_Layout          1.00                    true                
Aardwolf_New_Connection       1.00                    true                
Aardwolf_Package_Update_Checker1.00                    true                
Aardwolf_Planes_Mobs          1461  pl        false   true      597       
Aardwolf_Regen                1461  regen     false   true      882       
Aardwolf_Tick_Timer           1.00                    true                
Aardwolf_WeaponSwitch         1.10                    true                
Consider_info                 2.00                    true                
Copy_Colour_Output            1.10                    true                
GMCP_handler                  1.00                    true                
Miniwindow_Z_Order_Monitor    2.00                    true                
MobLookup                     1461  lm        false   true      679       
PluginFunctions               1461  plugins   false   true      827       
PotionQuafferv2               1.30                    true                
Repaint_Buffer                1.00                    true                
StatDB                        1461  statdb    false   true      1203      
StatMonitor                   1461  statmn    false   true      795       
Summary                       1.00                    true                
bast_hunt                     1461  bh        false   true      995       
bast_spellup                  1461  bsp       false   true      2313      
fix                           1461  fix       false   true      563       
miniwin_double                1461  mdbl      false   true      583       
miniwin_events                1461  mev       false   true      1145      
miniwin_help                  1461  mnhelp    false   true      1319      
miniwin_map                   1461  mmap      false   true      1665      
miniwin_moonbot               1461  mb        false   true      905       
miniwin_noexp                 1461  mnoexp    false   true      591       
miniwin_settings              1461  mnset     false   true      1346      
miniwin_spellup               1461  mspell    false   true      5841      
miniwin_stats                 1461  mstat     false   true      1397      
miniwin_tabwin                1461  mtab      false   true      1026      
miniwin_vote                  1461  mvote     false   true      663       
smoothTick                    1.00                    true                
xBastmush_Update_Checker      1461  bup       false   true      1283      
xBroadcast_Area               1461  barea     false   true      1322      
xBroadcast_CP                 1461  bcp       false   true      770       
xBroadcast_Double             1461  bdbl      false   true      552       
xBroadcast_GQ                 1461  bgq       false   true      1224      
xBroadcast_Inventory          1461  binv      false   true      745       
xBroadcast_Kills              1461  bkill     false   true      1172      
xBroadcast_Level              1461  blev      true    true      1034      
xBroadcast_Noexp              1461  bnoexp    false   true      1056      
xBroadcast_Quest              1461  bqu       false   true      549       
xBroadcast_Runto              1461  brunto    false   true      805       
xBroadcast_SpellSkills        1461  bsst      false   true      1231      
xBroadcast_Whois              1461  bwhois    false   true      563 


Link to Debug Summary: http://pastebin.com/YfqJVVZG

Bast
Amended on Fri 09 Sep 2011 08:07 PM by Bast
Australia Forum Administrator #40
Bear in mind that miniwindows are not directly locked to plugins, except the convention of using the plugin ID in their name. Thus unloading the plugin could still leave the window around.

As a work-around, try putting into the OnPluginClose function a call to delete the miniwindow(s) you use.

Then when the problem occurs, reload the plugin. This should force the miniwindow to be deleted, effectively simulating using a different plugin ID.
USA Global Moderator #41
Resurrecting this because with 5.06-pre + Wine I and another linux user get it happening all the time in the aardwolf mapper plugin.

Until I can make a reliable test plugin, here is a set of screenshots: http://imgur.com/a/g6XUv
In all of those images, the miniwindow background color is bright yellow. You can see it in the last image where I've disabled the texture.

Things to note:
Sometimes the whole miniwindow is black.
Sometimes some amount of the top left corner is drawn.
Sometimes some amount of the top somewhere else is drawn.
Hotspots still work.
Resizing still works, but the black areas stay black.
Dragging still works, but the black areas stay black.
WindowCreate still works, but the black areas stay black.
Changing Z order works, but the black areas stay black.
WindowWrite produces an exact replica of what is displayed, black parts and all.

WindowSetPixel('b6eae87ccedd84f510b74714_mapper', 50, 50, 65535)
WindowShow('b6eae87ccedd84f510b74714_mapper', false)
WindowShow('b6eae87ccedd84f510b74714_mapper', true)
Repaint()
Redraw()
print(WindowGetPixel('b6eae87ccedd84f510b74714_mapper', 50, 50))

prints 0
Amended on Sat 01 Apr 2017 07:48 PM by Fiendish
#42
Hey all,

So I am the other user that has been affected by this. I am hoping we can figure it out! It is oftly annoying to lose a whole window at a time.


I wish I had more information to contribute to this but I don't I was working with fiendish all morning so we could figure the info out that he has.


Best Regards,
Amended on Sat 01 Apr 2017 08:39 PM by Teclab85
Australia Forum Administrator #43
My immediate reaction is that this is some sort of clipping issue. Why it is happening is unclear.

Template:summary

Please provide a summary of your world configuration:

  • Either use the scripting Immediate window (Ctrl+I) to execute: Debug ("summary")

    or

  • Install the Summary plugin (see "Summary" feature) and type "summary"

Then copy the resulting information from the output window, and paste into a Forum message.

You need version 4.55 onwards of MUSHclient to do this.



I'm wondering if you have a large monitor and that somehow affects it.

Try a different (eg. earlier) version of Wine.
Australia Forum Administrator #44
@Teclab85 - are you also using the pre-release version? If so, can you try the latest release version?

http://www.gammon.com.au/forum/?id=13918

The pre-release version is compiled with a totally different version of the compiler.
Australia Forum Administrator #45
@Fiendish:

A plausible reason for the window failing to draw is lack of RAM. For example, there is another thread about that:

http://www.gammon.com.au/forum/?id=13973


Try making some debugging functions that:

  • Force Lua garbage collection
  • Discard cached rooms from RAM and then force garbage collection


Also try allocating more RAM to Wine if that is possible.

Also check return codes from the functions in the mapper that do the drawing (eg. WindowCircleOp, WindowRectOp, WindowPolygon). I notice that my code doesn't check the return codes - I suppose I assumed that drawing a rectangle would always work.

Don't bother - looking at the C++ code, it doesn't check the return codes for the Windows functions. So if they fail, they fail silently. My best guess at this point would be RAM, which accounts for why the most complex window fails, and the others apparently not.
USA Global Moderator #46
The fault pattern doesn't fit. Systems don't quietly drop individual resources when out of ram, they page or OOM kill processes.

Besides, it happens with MUSHclient using only about 90MB with about 7GB of RAM free. Definitely not out of ram (the memory leak thing doesn't happen to me. I don't often have other plugins loaded except mine.)

Quote:
which accounts for why the most complex window fails, and the others apparently not.

It's been reported in different miniwindows before. It's some kind of timing related issue, which is why it's always dependent on plugin load order and impossible to reproduce on a whim.

Quote:
Also try allocating more RAM to Wine if that is possible.

Whaaat. This isn't Mac OS 7 :)
Amended on Mon 03 Apr 2017 09:52 PM by Fiendish
Australia Forum Administrator #47
Quote:

Systems don't quietly drop individual resources when out of ram, they page or OOM kill processes.


Not necessarily, for example malloc would return NULL.

Quote:

It's some kind of timing related issue, which is why it's always dependent on plugin load order ...


Oh well, it was worth a try.
Australia Forum Administrator #48
I'm still awaiting a response to reply #44.
#49
Nick Gammon said:

@Teclab85 - are you also using the pre-release version? If so, can you try the latest release version?

http://www.gammon.com.au/forum/?id=13918

The pre-release version is compiled with a totally different version of the compiler.


So I was using the package that Fiendish has which is using 5.05 pre

I changed to 5.05 and it still does it.
Australia Forum Administrator #50
How long does this take to manifest itself? If I connect to Aardwolf and walk around, how long will it take for things to go wrong?
#51
There is no set time. Sometimes it happens in the first few minutes, while other times it won't happen for days of the client being open. This only started happening regularly for me since I upgraded from 4.98 to 5.05.
Australia Forum Administrator #52
Fiendish said:

Until I can make a reliable test plugin, here is a set of screenshots: http://imgur.com/a/g6XUv


There seems to be a certain pattern to the size of the area that works:


NMu013N.png - 68 x 23 px
0mQJhhb.png - 68 x 23 px
pSLy3xr.png - 68 x 23 px

rCFSiLL.png - 23 x 22 px

KZ2gWNI.png - 46 x 22 px
USA Global Moderator #53
That's a fascinating observation.
Let's assume for the moment that 22 is actually 23 and 68 is actually 69, but either measured or drawn off by 1, yeah? That means 23x23 blocks, which is a peculiarly square region but not a power of 2.
Amended on Tue 04 Apr 2017 07:27 AM by Fiendish
USA Global Moderator #54
Nick Gammon said:

How long does this take to manifest itself? If I connect to Aardwolf and walk around, how long will it take for things to go wrong?

It's more complicated than that. For me, I need to make sure that the plugins load in a particular order that I know will cause it, otherwise it's much harder to induce.
With the right plugin load order, executing a few speed runs like runto uncharted;runto uncharted;runto uncharted;runto uncharted;runto uncharted;... can cause it to happen within seconds of launch (remember Aardwolf runs are really fast)

The order that lets me reproduce it right now is...


<!-- plugins -->
<include name="aard_text_substitution.xml" plugin="y" />
<include name="aard_prompt_fixer.xml" plugin="y" />
<include name="aard_channels_fiendish.xml" plugin="y" />
<include name="aard_chat_echo.xml" plugin="y" />
<include name="aard_GMCP_handler.xml" plugin="y" />
<include name="aard_layout.xml" plugin="y" />
<include name="aard_statmon_gmcp.xml" plugin="y" />
<include name="aard_group_monitor_gmcp.xml" plugin="y" />
<include name="aard_health_bars_gmcp.xml" plugin="y" />
<include name="aard_Copy_Colour_Codes.xml" plugin="y" />
<include name="aard_repaint_buffer.xml" plugin="y" />
<include name="aard_new_connection.xml" plugin="y" />
<include name="aard_inventory_serials.xml" plugin="y" />
<include name="Hyperlink_URL2.xml" plugin="y" />
<include name="aard_package_update_checker.xml" plugin="y" />
<include name="aard_miniwindow_z_order_monitor.xml" plugin="y" />
<include name="aard_GMCP_mapper.xml" plugin="y" />
<include name="aard_ASCII_map.xml" plugin="y" />
</muclient>

But it's probably system dependent.
Amended on Tue 04 Apr 2017 07:18 AM by Fiendish
Australia Forum Administrator #55
Fiendish said:

That's a fascinating observation.
Let's assume for the moment that 22 is actually 23 and 68 is actually 69, but either measured or drawn off by 1, yeah?


My measurements were accurate, but the repetition of sizes does imply that somewhere something is setting up a clipping region of that size (or those sizes). Perhaps a previous plugin in the plugin sequence.
Australia Forum Administrator #56
@Fiendish:

If you can reliably reproduce the problem, please try this ...

In aardmapper.lua, inside function "draw" delete the miniwindow before creating it (around line 803).

That is:



   WindowDelete (win)   -- <------------- add this
   WindowCreate (win,   -- <------------- before this


This should more aggressively remove the resources used by the previously drawn map window. That may help resolve the issue.

@Teclab85 - you could try this yourself if you are happy using a text editor to make that change.
#57
I will add it, I am fairly competent with a text editor.
Fun fact I learned the other day that seems to be common knowledge.

Using the in client text editor crashes the whole client when running it with wine. It happens when you switch the windows. Reliably it happens not when you open the text editor but when you switch back to the main mud window.

Nice error. Heh, this is what I got when I tried that. To late in the evening to worry about it. I just thought I would share.

Run-time error
Plugin: Aardwolf_GMCP_Mapper (called from world: Aardwolf)
Function/Sub: OnPluginBroadcast called by Plugin Aardwolf_GMCP_Mapper
Reason: Executing plugin Aardwolf_GMCP_Mapper sub OnPluginBroadcast
H:\Desktop\Link to MUSHclient\lua\aardmapper.lua:823: attempt to perform arithmetic on local 'iwidth' (a nil value)
stack traceback:
H:\Desktop\Link to MUSHclient\lua\aardmapper.lua:823: in function 'draw'
[string "Plugin: Aardwolf_GMCP_Mapper"]:2755: in function 'got_gmcp_room'
[string "Plugin: Aardwolf_GMCP_Mapper"]:2866: in function <[string "Plugin: Aardwolf_GMCP_Mapper"]:2854>
Amended on Thu 06 Apr 2017 01:00 AM by Teclab85
Australia Forum Administrator #58
Yes I see what you mean. Never mind, scratch that idea.
USA Global Moderator #59
Leaving myself some more notes...

http://imgur.com/a/oodWq

Being somehow maybe timing related, it's hard to know whether deleting the mw each time fixes it or just changes the timing, but it definitely would mean reloading graphics and fonts like a dozen times per second. :\
Amended on Fri 05 May 2017 04:28 PM by Fiendish
USA Global Moderator #60
More notes.

I've found an old newsgroup thread that describes something I'm seeing in debugging, though it doesn't suggest a real cause or a _great_ solution, and their retry workaround doesn't work for me.

http://microsoft.public.vc.mfc.narkive.com/lKkH8Gs7/cdc-selectobject-failure-reason
Amended on Sun 07 May 2017 12:46 PM by Fiendish
Australia Forum Administrator #61
That thread seems to be talking about an occasional failure, whereas from what you describe once it fails it keeps failing.

I still think a clipping region problem sounds more likely.
Australia Forum Administrator #62
I've made a change that may possibly help. When you do a CreateWindow you now get a new device context. This should discard anything that has been corrupted in the earlier one.

See http://www.gammon.com.au/forum/?id=13903 for how to grab a copy of the new version of the executable.

Please let me know if this fixes the problem or not.

Change details here:

https://github.com/nickgammon/mushclient/commit/1f98833
USA Global Moderator #63
Seems good for me so far. I'm still waiting to hear back from some other players.