Jump to content

TmEE

Member
  • Posts

    367
  • Joined

  • Last visited

  • Donations

    0.00 USD 
  • Country

    Estonia

Posts posted by TmEE

  1. And I poked him again, and this is what he told :

    18:28:30: Its not the section structure
    18:29:23: something changes the state of the pages to COPY WRITE
    18:30:34: the first two pages of .data section get changed from READ_WRITE to WRITE_COPY
    18:30:53: I do not know what api call does this, something todo with shared mapping
    18:31:07: however win9x does not support this page mode
    18:32:01: so there is no boundry between the remaining READ_WRITE pages of .data and the pages of .text which where temporarly made READ_WRITE
    18:35:09: I will try hooking MapViewOfFile and see if that is culpret

    18:44:06: actually the problem is nothing to do with the section structure
    18:44:29: it seems that the WRITE_COPY section is set by windows

    18:46:18: its a memory optimisation, setting the .data section to copy on write in case the program decides not to change it
    18:47:23: it seems to only apply to complete pages, that would explain why the last partial page is normal READ_WRITE
    18:47:50: if this is the case then the gcc startup code actually has a bug that would effect modern windows
    18:48:10: if the program has less than 4kb of data then it would crash I would think

    I'll edit the post when more info is available.

  2. In my case it is :

    performance

    compatibility with certain hardware I use daily (sound stuff)

    my own hardware projects

    customisability/tweakability

    doesn't spy on you

    impossible to take down remotely

    more or less modern malware proof

    I do have installs of newer windowses but they mostly collect dust, I just don't need to run them very often (only for FPGA stuff really).

  3. Interesting information that provides a few more details on what went wrong, but nothing on why (or where). We already knew there was a loader problem. Also doesn't explain why VLC 2.1.2 works and VLC 2.1.3 doesn't (same section definitions).

    Can you ask him to do the same analysis for the VLC 2.1.2 libvlccore.dll? Also the UPXed and patched .text versions. And what tool is he using to get the memory page details? Thanks.

    He just wrote the test tool as we spoke about it. Plus he has code from older times to use for the purpose.

    He writes some stuff, sends it over to me, I run it, send back error results and wait for another test. Couple hours went by like that haha.

    Once he appears again I will poke him about the 2.1.2.

  4. With the help of a friend of mine, the problem is figured out :

    23:16:19: I will try once more to explain in text
    23:21:01: I have figgured it out proper
    23:22:02: http://msdn.microsoft.com/en-us/library/windows/desktop/aa366775(v=vs.85).aspx
    23:22:27: RegionSize

    The size of the region beginning at the base address in which all pages have identical attributes, in bytes.
    23:23:22: Because win9x does not support execute PAGE_EXECUTE_READ
    23:23:45: that page could merge with another page of PAGE_READONLY
    23:24:19: somehow this has manifested to confuse the startup code and it ends up setting its .data section as read only


    ... bunch of testing....


    0:24:11: I 100% know the problem now
    0:24:49: winnt has another type of flag PAGE_WRITECOPY, win9x does not have that either
    0:25:06: 6A540000, 000000, 001000, R
    6A541000, 001000, 12B000, ER
    6A66C000, 12C000, 002000, WC
    6A66E000, 12E000, 001000, RW
    6A66F000, 12F000, 10C000, R
    6A77B000, 23B000, 002000, RW
    0:25:26: there is a section of write_copy between .text and .data
    0:25:51: on win9x the WC is merged with the RW below as just RW
    0:26:11: when ER is changed to WR it merges with the RW below
    0:26:44: the startup code uses VitualQuery to get the size of the .text again instead of caching its previous result
    0:28:07: without the buffer of WC all the RW merges together and .data ends up being made write only when .text is reset to write only after temporary write access to apply start time code mods
    0:28:49: somebody should report this to gcc as a library bug
  5. I have been experimenting with WinME and I will be switching over to in from 98SE for sure, mainly because it takes much more effort on ME to get large blits fail than it does on 98SE and TCP/IP does not go through some form of corruption after a while that makes it drop new connections.

    Anyway I have this one weird problem around accessing network shares from my 98 based server :

    I cannot access any share until I have accessed a share that is not password protected through Network Places by going to workgroup->computer->share. Accessing a password protected share prior to that will make windows yell share is inaccessible or nothing happens altogether, sometimes password is asked but nothing happens beyond that. Also none of the shortcuts will work prior to accessing a share by going to it through Network Places as I described earlier...

    I only get "share/computer is not accessible" type error messages. When I do get such an error I need to hit refresh in the workgroup window and after that I can attempt access again.

    On my 98SE computers there's no problems around this, I access the share from shortcut and it will ask me password or show the share directly, no errors ever (unless network cable in unplugged :P)

    Has anyone ever experienced something similar ?

    What settings can I change in the server and/or the ME computer ?

    EDIT:

    Solution :

    get driver version 6.64.0.0 if you have Broadcom NetXtreme 5788 NIC and experience the issues described.

    I will host the versions I found on my site sometime, I need to reorganize some stuff first.

  6. Go for a Core2Duo machine if going for Intel route. One of the cores may sleep all time but the one that runs will run circles around a P4.

    My machine has a E7300 in it I got for 16€. It is 2.66GHz but way faster than the 3.2GHz P4 was in m old machine, takes much less power and does not heat the room up (though some people may like that LOL).

    My laptop runs a 2.2GHz AMD Turion 64 ML-40. 98 and ME run very well on it, and battery life is much longer than with XP on the machine. You do need to install Powernow! or there won't be any battery life regardless of OS and settings.

    I got 2GB of RAM in the laptop and with ME I can have it all usable, minus 64MB the GFX chip takes, which makes the RAM figure 1984MB that is just below the absolute max, so there's no need to muck around in the SYSTEM.INI file when installing (which can be a PITA with ME).

  7. I'm going to give it a go shortly, I'll report back soon :)

    EDIT:

    It works wonderfully !

    @Dencroso : Yes that same VIA file. I will also have a new configuration for 2GB RAM shortly, and then another once things prove to be stable.

  8. I just tried that, and the driver installed, hardware was recognized and did not show errors.... and then I plugged in an USB stick and the machine froze.

    EDIT: But using USBHUB20.SYS from a VIA driver makes things work properly.

  9. All my PCI slots are used :P

    But yes, when one other option that got presented to me ends up not working out I will take a much closer look at NUSB. I already peeked in and I think it will not be too hard to get just the USB 2.0 bits play nice.

  10. I am testing out Windows ME and the final thing I have not managed to "fix" is USB 2.0.

    I found an experimental USB 2.0 driver from MDGX site but it doesn't work on any of my hardware...

    So I wonder, is there anything else besides that experimental one ? I didn't seem to find anything...

    Perhaps components of NUSB for 98SE can be used to create something definitive ?

  11. I think I found the fix to the white clock problem - you need to make PChealth.EXE not run prior to installing RP9 and applying skins and stuff. The service will undo the changes in system files done by RP and that causes the problem. It'll likely make the system more responsive too as there's one less thing that is constantly monitoring everything.

    It seems on WinME the "superbar" version of a skin will not have two rows of systray icons as on 98SE... but I can live with that, it just looks less good.

    EDIT: Seems only the Watercolor Emico is affected, that means I'll only have to adjust the skin's ini file ! I'll provide a "fix" when I achieve that ^^

    EDIT2: TaskBarSize=39 will give me 2 rows of icons. I am not able to get 2 rows in other ways so I'll have to adjust the other taskbar related values so all looks uniform and naiss.

  12. After a long 98SE session I start getting Internal Communication Error when loading pages and/or missing images and elements in web pages in Opera. Temporary solution seems to be right-clicking on missing elements and reloading them and things start working again for a while.

    Other option that gives temporary effect is release/renew of the IP address.

    It kind of seems the TCP/IP stack gets messed up in some way after a while...?

    Other thing that happens after a while is image freezes in Opera, and some other programs windows. Blits seem to become ineffective. Screenshots end up color depth reduced too at that point. Decreasing window size will make things temporarily functional again, aswell as closing the program, waiting a while and sometimes hammering ctrl+alt+del also helps.

    Having DOS boxes open will greatly shorten the time before the problem to appears.

    This one is definitely some kind of GDI related issue. GDIMaxHeapSize and UserMaxHeapSize both have effect on this, having larger values than default are most definitely helpful. I have not found a sweet spot but first is an 24576 and second is at 4096. This also allows MS-Paint to load much larger files than it normally allows.

    Not having KEX or RP installed will mean very short session time before the problems appear.

    Having Skype running will significantly shorten the time those errors start appearing. I wish some 3rd party alternative exists...

    So I am wondering if there's any more permanent fixes ? Those two seem to be the most annoying things as far as stability and longetivity goes of a single session. Current uptime 1 day and 4 hours ^^

    EDIT :

    I have made some little tests. When the blits start failing the functions return the GDI_ERROR value. Maybe with help of a friend I can find something that could lead to fixing that annoyance someday :w00t:

    Uptime 2 days and 7 hours :thumbup

    EDIT2 :

    A bit later and it seems windows is to the point where Blits no longer recover. I can only have small window sizes from now on. None of the workarounds... work... around... lol

    Interesting thing is that there have been no broken images or internal communication error pages in Opera.

    EDIT3:

    So I managed to finally destroy the session with a program a friend made that could spawn thousands of windows. ~2000 windows killed the session. On the next session I could do 4000 and stuff worked without ill effects after closing. More is also possible and things still work.

    I also tired to overflow GDI stuffs, and I managed. But it all fully recovered when I closed down programs and stuff.

    Windows gets internally messed up after a while, and not necessarily because of your actions...

    EDIT4:

    Blits of wide images are much more likely to fail than ones that aren't wide. Height plays a whole lot smaller role here.

  13. I guess make a copy of MSHDC.INF and modify the top two sections to be like the 3rd one is here (copied from MSHDC.INF) and feed it to the new device. Perhaps it'll work then.

    [esdilc1]ConfigPriority=HARDWIREDIOConfig=1f0-1f7(3ff::)IOConfig=3f6-3f6(3ff::)IRQConfig=14[esdilc2]ConfigPriority=HARDWIREDIOConfig=170-177(3ff::)IOConfig=376-376(3ff::)IRQConfig=15[esdilcgen1]ConfigPriority=HARDWIREDIOConfig=10@0-ffff%fff0(ffff::)IRQConfig=3,4,5,7,9,10,11,12,14,15
×
×
  • Create New...