Jump to content

Why do some versions of Flash Player 9 work on YouTube while other ver


larryb123456

Recommended Posts

EIP = 69852be2
Bytes at CS:EIP:
89 82 94 00 00 00 8B 93 60 02 00 00 83 FA 08 7F

and


Patch Log:
69852BD6:0F 48 C2 8B 54 24 60 C1:CMOV3 =>79 02 8B C2 E9 E0 1B 45

show that the AV does follow closely after the II patch and both use the edx register:


[edit]
69852BD6 - 0f 48 c2 - cmovs eax, edx
;often confusingly reported as: cmovs %edx, %eax
[/edit]
...
69852BE2 - 89 82 94 00 00 00 - mov [edx+00000094], eax

CMOV3 indicates the cmovs is properly detected as a three-byte instruction.

[edit]

"cmovs eax, edx" should be emulated as:

        79 02          jns After
8B C2 mov eax, edx
After: E9 .. .. .. .. jmp 69852BD9

FineSSE is emulating this correctly

[/edit]

(Please add the contents to clipboard. Typing it in by hand is not really fun - like typing C64 listings in machine code from 1980th computer magazines.)

Agreed. A screen capture would have been acceptable, but on-the-clipboard is best!

Edited by jumper
Link to comment
Share on other sites


I think I install

6

Flash MX 2004

I forget what I installed next, might have upgraded the IE as well.

All I know is that I avoid the lastest of anything, with flash.

So far I am able to watch videos, but when I go full screen the video is reloaded again, so I have to load the fullsreen first. I am able to select video files, within itself

The only error I get, is "THERE IS AN ERROR WITH YOUR VIDEO" and right underneath the thing is

loading and playing fine. How stupid is that. To slove that problem I just reload the pages.

Every other video website that is not Youtube does not work and demands the latest flash version.

To slove that problem I just get a flv downloader to get the video.

Link to comment
Share on other sites

To determine if the access violation occurred because of a bad patch of the illegal instruction (known to happen in early versions), we need to know more about the patch. Fortunately, several days ago I rev'ed FineSSE, adding a "-v" option to reenable a debug window I was using during development:

finesse23.exe

Add the -v option to the FineSSE command line in WIN.INI (or the equivalent to the registry), no restart required!:


[AeDebug]
Auto=1
Debugger=C:\Program Files\finesse23.exe -p %u -e %u -v

Please enable -v in the new version, retest, and post the text of the Patch Log. Thanks.

Hi Jumper. I'm confused on how to use FineSSE. If I add this info to the WIN.INI file, will FineSSE run automatically when I run another program, or do I still have to drag and drop the program onto the FineSSE icon?

If it doesn't run automatically, what if I want to run Flash embedded in my browser?

Also, do you know if FineSSE will make Flash 10.x work?

I have a Pentium MMX processor. I was glad to see that it meets the minimum requirements to run FineSSE.

Thanks in advance. :)

Link to comment
Share on other sites


[AeDebug]
Auto=1
Debugger=C:\Program Files\finesse23.exe -p %u -e %u -v

Hi Jumper. I'm confused on how to use FineSSE. If I add this info to the WIN.INI file, will FineSSE run automatically when I run another program,

Yes. If you add these lines to your Win9x WIN.INI, FineSSE will auto-launch whenever any app or plugin has a debug-able error.

or do I still have to drag and drop the program onto the FineSSE icon?

No. (Unless the app or plugin does some now-useless II exception handling that you would like to avoid, like Flash 9 r289.)

If it doesn't run automatically, what if I want to run Flash embedded in my browser?

FineSSE should launch automatically when needed by plugins and other sub-processes. However, you can also drop your browser's executable onto FineSSE to avoid built-in II handling the likes of "An error has been encountered, you should reboot your computer."

Also, do you know if FineSSE will make Flash 10.x work?

Only if the error you are encountering is an Illegal Instruction. FineSSE was designed to solve the most common Illegal Instruction errors I've seen reported on major forums. I expect to continue updating it as new II errors are reported.

Link to comment
Share on other sites

I tried running GOM on my AMD K6 450 CPU using Windows 98 FE. Adding FineSSE to my WIN.INI File do not work.

I ran "FineSSE GOM" but got a error after over 153000 Illegal Instructions and 7 Access Violations.

My P6CPU.VXD works similarly to FineSSE but does it's job in Kernel mode. It can run GOM successfully but is too slow to properly render Video.

FineSSE appears to be much slower as it ran for quite a while before it reported the error. Even if it worked, I doubt that FineSSE could be used with GOM.

Link to comment
Share on other sites

Thanks for testing GOM with both P6CPU.VXD and FineSSE, rloew. I suspected that P6CPU.VXD would handle GOM's cmov errors with better performance than FineSSE.

GOM is now the first program I know of that uses cmov in a performance loop, so it will be an important test for us. I will install it and see if I can modify FineSSE to patch, rather than emulate any critical cmov intructions.

Link to comment
Share on other sites

Thanks for testing GOM with both P6CPU.VXD and FineSSE, rloew. I suspected that P6CPU.VXD would handle GOM's cmov errors with better performance than FineSSE.

GOM is now the first program I know of that uses cmov in a performance loop, so it will be an important test for us. I will install it and see if I can modify FineSSE to patch, rather than emulate any critical cmov intructions.

I wrote P6CPU.VXD specifically to run GOM. I thought about Patching to get the necessary speed. Unfortunately, CMOV Instructions are not easy to Patch. The required Code is One Byte longer than the original, so it cannot be done in place. Most of the CMOV Instructions are Three Bytes whuch is not enough for a CALL or JMP. It is necessary to replace more than one instruction. This makes automatic Patching very difficult.

I added a Log to P6CPU.VXD to make a list of Instructions to Patch. I managed to Patch enough Instructions to get one Video to Work. It was fast enought to be useable, but other Videos needed more Patches. Unfortunately GOM has over a thousand CMOV Instructions.

Link to comment
Share on other sites

If you want to use GOM only to play defective videos, you can simply disable the internal codecs and avoid the "Screen Size"(?) stretching mode. Then it runs fine on my K6-3+. On my PC is GOM the only program that can display certain YouTube downloads that I can not run on any other players. It is a false myth that VLC plays everything best. At least my old VLC version can not run many FLV videos properly, nor can MediaPlayer Classic run them.

Link to comment
Share on other sites

I installed GOM 2.1.28.5039, but it didn't like my system. Lots of systems freezes where Ctrl-Alt-Del wouldn't even respond. Performance worse than MediaPlayer2 when it did work. Some Access Violations, but no Illegal Instructions.

This C3 system is the only one I have still running that doesn't support CMOV, so I won't be able to test GOM. :(

But it just occurred to me that I can add a gratuitious CMOV to the inner loop of one of my own apps for performance testing. :)

I wrote P6CPU.VXD specifically to run GOM. I thought about Patching to get the necessary speed. Unfortunately, CMOV Instructions are not easy to Patch. The required Code is One Byte longer than the original, so it cannot be done in place. Most of the CMOV Instructions are Three Bytes whuch is not enough for a CALL or JMP. It is necessary to replace more than one instruction. This makes automatic Patching very difficult.

Right. Also, if the CMOV is near the start or end of a procedure, there might be five free bytes for a far jump within range of a near jump (2 bytes).

A string of CMOVs would be the easiest to parse and would also yield the best performance. Ideally the upper word of the far jump address would also form an illegal instruction or breakpoint in case it is a target address itself.

I added a Log to P6CPU.VXD to make a list of Instructions to Patch. I managed to Patch enough Instructions to get one Video to Work. It was fast enought to be useable, but other Videos needed more Patches. Unfortunately GOM has over a thousand CMOV Instructions.

I'd love to study all or part of this log if you want to email it to me. I'd have a better idea of what instruction sequences to target first.

Link to comment
Share on other sites

To determine if the access violation occurred because of a bad patch of the illegal instruction (known to happen in early versions), we need to know more about the patch. Fortunately, several days ago I rev'ed FineSSE, adding a "-v" option to reenable a debug window I was using during development:

finesse23.exe

Add the -v option to the FineSSE command line in WIN.INI (or the equivalent to the registry), no restart required!:


[AeDebug]
Auto=1
Debugger=C:\Program Files\finesse23.exe -p %u -e %u -v

Please enable -v in the new version, retest, and post the text of the Patch Log. Thanks.

I installed FineSSE as above a couple of days ago, along with the Flash AX and Plugin 9r289. However, I found that I had to use the "Debugger2" trick mentioned earlier because I had/have VC 4.2 installed.

Anyway, soon afterwards I had some issues with Flash, and a message came from FineSSE saying something like, "Too many exceptions, quitting". Next time, I'll try removing the -v option, just in case it's a limitation of the event logging (unless you tell me that won't help). I'll also try to take better note of what pops up on the screen.

or do I still have to drag and drop the program onto the FineSSE icon?

No. (Unless the app or plugin does some now-useless II exception handling that you would like to avoid, like Flash 9 r289.)

Can you please clarify what you mean about Flash 9r289? Is this comment only relevant for pre-P2 machines?

I tried running GOM on my AMD K6 450 CPU using Windows 98 FE. Adding FineSSE to my WIN.INI File do not work.

I ran "FineSSE GOM" but got a error after over 153000 Illegal Instructions and 7 Access Violations.

My P6CPU.VXD works similarly to FineSSE but does it's job in Kernel mode. It can run GOM successfully but is too slow to properly render Video.

FineSSE appears to be much slower as it ran for quite a while before it reported the error. Even if it worked, I doubt that FineSSE could be used with GOM.

I installed P6CPU.VXD on my P1 MMX machine (currently in storage due to renovations) a while ago but it didn't handle all the necessary instructions for mjpegtools, so I'll try FineSSE on this at the next opportunity.

Meanwhile, is P3CPU.VXD available to download, to test for the P3 issues (such as SSE) for later builds of Flash 9 (and 10, from the testing I did preciously)?

Joe.

Link to comment
Share on other sites

I installed GOM 2.1.28.5039, but it didn't like my system. Lots of systems freezes where Ctrl-Alt-Del wouldn't even respond. Performance worse than MediaPlayer2 when it did work. Some Access Violations, but no Illegal Instructions.

This C3 system is the only one I have still running that doesn't support CMOV, so I won't be able to test GOM. :(

But it just occurred to me that I can add a gratuitious CMOV to the inner loop of one of my own apps for performance testing. :)

I wrote P6CPU.VXD specifically to run GOM. I thought about Patching to get the necessary speed. Unfortunately, CMOV Instructions are not easy to Patch. The required Code is One Byte longer than the original, so it cannot be done in place. Most of the CMOV Instructions are Three Bytes whuch is not enough for a CALL or JMP. It is necessary to replace more than one instruction. This makes automatic Patching very difficult.

Right. Also, if the CMOV is near the start or end of a procedure, there might be five free bytes for a far jump within range of a near jump (2 bytes).

A string of CMOVs would be the easiest to parse and would also yield the best performance. Ideally the upper word of the far jump address would also form an illegal instruction or breakpoint in case it is a target address itself.

None of these would be easy to automate. I looked at the preceeding and following instructions to see what I needed to Patch to get the 5 Bytes for the Calls.

I may be able to write a program around my Disassembler Subroutine to show the before and after instructions for each CMOV and try to detect any possible Call or Jump targets within.

I would still have to manually classify each one before running a Patching Program to do the Patches.

I added a Log to P6CPU.VXD to make a list of Instructions to Patch. I managed to Patch enough Instructions to get one Video to Work. It was fast enought to be useable, but other Videos needed more Patches. Unfortunately GOM has over a thousand CMOV Instructions.

I'd love to study all or part of this log if you want to email it to me. I'd have a better idea of what instruction sequences to target first.

I'm not sure that would help much. I got about 50 with the first Video. I Patched them all and could play the Video.

A different Video produced a comparable amount of additional CMOV Instructions. You would have to exercise every possible Codec to get them all.

It is probably easier to just do all of the CMOV Instructions. Then Gretech will update GOM and you get to start all over.

Link to comment
Share on other sites

I installed P6CPU.VXD on my P1 MMX machine (currently in storage due to renovations) a while ago but it didn't handle all the necessary instructions for mjpegtools, so I'll try FineSSE on this at the next opportunity.

Meanwhile, is P3CPU.VXD available to download, to test for the P3 issues (such as SSE) for later builds of Flash 9 (and 10, from the testing I did preciously)?

Joe.

P6CPU.VXD was written for GOM. It does not support Flash or mjpegtools.

I have not updated P3CPU.VXD since it did not seem to solve the Flash problems even though it Patched the Illegal Instructions. Misinterpreted Instructions cannot be detected or Patched using a Trapper, Code analysis is needed.

I have attached it for your experimenting.

NOTE TO EVERYONE! This is NOT Production Code. It is for Experimental use only.

P3cpu.zip

Link to comment
Share on other sites

I have not updated P3CPU.VXD since it did not seem to solve the Flash problems even though it Patched the Illegal Instructions. Misinterpreted Instructions cannot be detected or Patched using a Trapper, Code analysis is needed.

I have attached it for your experimenting.

NOTE TO EVERYONE! This is NOT Production Code. It is for Experimental use only.

Thank you Mr Loew.

As this operates in kernel mode, will it take precedence over FineSSE (or the VC 4.2 debugger), or do I need to uninstall the later from 'win.ini'?

Joe.

Link to comment
Share on other sites

I have not updated P3CPU.VXD since it did not seem to solve the Flash problems even though it Patched the Illegal Instructions. Misinterpreted Instructions cannot be detected or Patched using a Trapper, Code analysis is needed.

I have attached it for your experimenting.

NOTE TO EVERYONE! This is NOT Production Code. It is for Experimental use only.

Thank you Mr Loew.

As this operates in kernel mode, will it take precedence over FineSSE (or the VC 4.2 debugger), or do I need to uninstall the later from 'win.ini'?

Joe.

Correct.

I don't think you need to uninstall FineSSE. It should not get activated unless other errors occur.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...