pouët.net

Win10 upgrade breaking demos, yes or no?

category: general [glöplog]
Dr Claw: sent you a mail, let me know if you didn't receive it.
added on the 2016-10-26 23:22:18 by Seven Seven
Quote:
So, Win10 ran fine on the @party compo machine. Though today I went to run "2nd Stage Boss" and it fails silently. It ran fine back in June on the same machine. Win10 64bit, i7, R9 Fury. I have noticed that "Escape Through Subspace 1k" also fails similarly if I run the 1k version, though running the "safe" 2k version works... hrm...

2nd Stage Boss and most recent 1k intros use the new TINYIMPORT feature of Crinkler 2.0. It is designed to be used with 1k intros, but there is of course nothing stopping people from using it for a 4k, as is the case here.

The idea behind TINYIMPORT is to sacrifice some compatibility to gain bytes. Rather than storing hash values of all imported functions (as the normal Crinkler importer does), it imports all functions from all relevant DLLs and simply writes them all to a hash table based on the hash values of the function names. It tries to find the smallest possible hash table and a suitable hash function with no collisions between the functions used by the intro and other functions (that are imported later). To do this, it looks at all functions in the imported DLLs on the machine the intro is built on (plus an internal list of functions from common DLLs present on available Windows versions at the time Crinkler 2.0 was released). But if a later Windows update adds functions to some of these DLLs, the intro might break. This is what has happened with a recent Windows 10 update.

In short: TINYIMPORT might not work on other machines that the one the intro is built on. This also matches perfectly with the observations that drift describes above. This is why we recommend including a version built with the normal importer for safety. :)

This was maybe not a good feature to include, or at least the warning signs should have been bigger. On the other hand, giving people the option (and let them accept the responsibility) allows for better 1k intros, though it does to some extent violate our original philosophy of despotically forcing compatibility onto 4k makers.

It is unfortunately not something that can be easily fixed by a recompression, since changing the hash function involves changing all instructions referring to imported functions. Also, Crinkler will not know for sure which functions the intro actually wanted to import, though it could take an educated guess. It might be possible to make some heuristic method that will sometimes work.

Re-building from source (or just from object files) on an up-to-date machine will always work. Until the next update of course...
added on the 2016-10-27 22:49:27 by Blueberry Blueberry
Thanks so much for the update, Blueberry. It's unfortunate that OS updates will break compatibility with this feature, but at least I know which feature is likely causing the breakage now. That way I can help compo entrants at future @parties debug their entries, which is the critical thing I was going for here.
added on the 2016-10-28 01:31:04 by DrClaw DrClaw
Thanks for the information Blueberry, it makes perfect sense now. Since I am aware of the issues I can allow for it in the future, releasing "safe" builds and such. I didn't even consider people might use the TINYHEADER option for 4k, naturally since the option is there then someone will try to use it. I understand you not wanting to release a tool which would allow people to make a bunch of incompatible intros but as long as the information and warnings are provided then people can make their own choices. At least if it breaks now we will understand why.
added on the 2016-10-28 02:06:28 by drift drift
So hm, is there some sort of contingency plan for this, in terms of knowing whether using an option like that would break?

What I mean is, let's say with a hypothetical access to all Windows version ever, there is a possibility that a compressed executable will work on all of them because the hashing function goes lucky, but it's also possible that if Crinkler for some reason picks a different one it will result in collisions even on the same two computers?
added on the 2016-10-30 01:36:32 by Gargaj Gargaj
Note that "all windows versions ever" not only includes major versions but also any updates which might introduce new dll exports.

Best would be that compo rules clearly state that such whacky import techniques are not allowed for 4k, like they already do for import by ordinal.
added on the 2016-10-30 08:04:24 by T$ T$
Quote:
What I mean is, let's say with a hypothetical access to all Windows version ever, there is a possibility that a compressed executable will work on all of them because the hashing function goes lucky, but it's also possible that if Crinkler for some reason picks a different one it will result in collisions even on the same two computers?

The import handler is deterministic, in the sense that the same set of imported functions on the same machine will always result in the same hash function (and thus the same breakage situations). Indeed some function sets might luckily avoid collisions, while others are unlucky.

It might be possible to introduce some heuristic which will choose the hash function among several, same-sized ones which is judges to have the least risk of running into collisions later. Perhaps based on which DLLs most often receive new functions in updates. Still it will not be completely update-proof.
added on the 2016-11-01 19:26:15 by Blueberry Blueberry
DrClaw, drift, Blueberry: Thank you for detail informations!

I have released fix version "2nd stage boss" built without /TINYIMPORT option.
It is expected to work on future Windows versions and the filesize is still lesser than 4096 bytes.
http://www.pouet.net/prod.php?which=66962
The download URL has changed into the fix version.
added on the 2016-12-25 04:58:22 by 0x4015 0x4015
I love what a weird mix of insane hacks and super-decent engineering the demoscene has become.
added on the 2016-12-25 10:37:57 by skrebbel skrebbel
skrebbel: Wasn't it always? ;)
added on the 2016-12-25 11:33:19 by Blueberry Blueberry
Quote:
Oops! Crinkler has crashed

Blueberry: when I compile my intro with the Windows 10.0.14393.0 as platform target, crinkler crashes with that error. Using the Windows 8.1 platform target, everything is fine. I'm using Visual Studio 2017.
added on the 2017-03-31 23:16:38 by xTr1m xTr1m
I will NEVER "upgrade" to Win10, I will stick with Win7 until LONG after 2020.

Win10 sucks in every way that I've heard about, and what the fuck is with this idea that it's the last Windows ever? Seriously? By the time 2030 rolls around, I bet it will have had 20+ Service Packs and millions of updates before Microsoft is forced to release Win11.
added on the 2017-04-01 02:06:56 by Foebane72 Foebane72
Quote:
Win10 sucks in every way that I've heard about

I haven't had a single issue with it.
added on the 2017-04-01 02:24:43 by Gargaj Gargaj
Quote:
Quote:
Win10 sucks in every way that I've heard about

I haven't had a single issue with it.

You're lucky. :(
I've had plenty of issues, and every time I Google about one, I see plenty of people complaining too but no solution, or very hacky ones.
added on the 2017-04-01 05:07:45 by Zavie Zavie
The only meaningful issue I've had is that TINYIMPORT Crinkler option. Of course I only use Windows (10, or whatever) for Demos and VR.
added on the 2017-04-01 07:07:45 by DrClaw DrClaw
Quote:
I've had plenty of issues, and every time I Google about one, I see plenty of people cmplaining too but no solution, or very hacky ones.

In the last year I've had at least three bug reports for OpenMPT which were clearly about broken OS updates and none of our own code was involved (crash when Windows file dialog wants to preview .mod files as MPEG2 videos, drag&drop targets not working at high DPI, another crash with large files in file dialogs...), it's not even funny anymore how many broken updates they push.
Quote:
I will NEVER "upgrade" to Win10, I will stick with Win7 until LONG after 2020.

I still remember people saying this about Windows XP. How they will "never" upgrade and stay with Windows 98 SE 'til the earth explodes. :)
added on the 2017-04-01 13:24:51 by tomaes tomaes
You wouldn't believe that some people were critical of OpenMPT dropping Windows 98 support (albeit only with KernelEx patch) in 2017... and those are not even the people who still have a machine for which this would be relevant news. :)
I do actually (with the versions that still run on Windows 98) still run it on my old Pentium 2 occasionally to see how well it performs. :)
Quote:
I still remember people saying this about Windows XP. How they will "never" upgrade and stay with Windows 98 SE 'til the earth explodes. :)


I couldn't WAIT to upgrade to XP! I had Windows ME and made a VHS tape of PC demos with it, it was a miracle any of them ran on such a fucking godawful OS.
added on the 2017-04-01 18:30:53 by Foebane72 Foebane72
Quote:
@smash: interesting that you also traced this down to somehow relate to variable loops. That was my conclusion also, with the added bit that they seem to confuse the limitations of tex2D() and tex2Dlod() inside such loops.


can you guys somehow submit it to nvidia for fix? just wondering...
added on the 2017-05-01 23:00:09 by pouetmk pouetmk
The Win 10 Update model is a massive PITA.

- At work my desktop workstation is fine, occasional updates, not a problem.

- BUT, I use a lot of VMs for development and testing. Thiis a massive pain and waste of time, as they seem to always want updating. It's a task just to keep 4 Windows 10 VMs up to date (MBR and UEFI versions, with x84 and x64 builds..). Feel like I'm forever making 'base' snapshots of VMs after updates etc, not actually working!
(I have to reboot a lot due to driver installations, so that's not avoidable)

On top of all this Windows 10 has a 'Maintenance' mode, so even when it doesn't want updating it wants to do its own maintenance tasks. If you have a machine you leave idle it does it then, but if it isn't left idle enough it forces itself on you during reboots.

Turn it off like this.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\Maintenance]
"MaintenanceDisabled"=dword:00000000



- At home I have a Windows 10 machine I run a Linux VM on that does downloading and sharing media over UPNP, Personal FTP, RDP etc. Windows 10 will just reboot the damn thing! when it feels like. I don't want this machine rebooting until ** I ** say so.

- At home I have another Windows 10 machine as my main desktop. The only real problem I've actually had is my old lexmark/usb printer not working after Creators update anymore, when it did work (It's not supported on Sierra either :(.
added on the 2017-05-03 12:19:53 by Canopy Canopy
Canopy: press win, write services, search for windows update, right click, disable. Enable when you want to update.
Same for cmd: net stop "windows update" / net start "windows update"
added on the 2017-05-03 12:23:05 by leGend leGend
*facepalm* I should know that, I guess its because I
do it forever with the existing Windows 7 machines that get 'stuck' doing updates and burning CPU.. (fix for that are stopping wuauserv and installing KB3020369, then repeating the process with KB3020369)

Just RDP'd to home and turned it off.. let's see eh :)

btw even OS X Sierra and Manjaro Linux (based off of Arch) I use moan about updates, it's not just a windows thing to nag, but it is to be a dick about it :D
added on the 2017-05-03 12:40:13 by Canopy Canopy
( * second KB for win7 fix should be KB3172605 )
added on the 2017-05-03 12:40:53 by Canopy Canopy
I was happy using my 64-bit Windows 7 machine pretty much the way i bought it until the bloody forced upgrade happened.

It was an experience that I might equate to having a train run on me by everyone who works at Microsoft, so obviously I pretty much switched to Ubuntu Linux (Mint 18) as i no longer wished to have anything to do with any company that seek to have that kind of relationship with its customers.

Thankfully they all seemed to have pencil dicks, so it was not too painful. But it was still humiliating and took a couple of hours and there was little I could do to stop it.

All I might have to say for anyone working for Microsoft who was in any way involved with this: "Fuck me? Fuck You!"

login