shinchiro/mpv-winbuild-cmake

Cannot index into null array after updating to 20220821

Closed this issue ยท 37 comments

I just updated to 20220821 with the updater and tried to play a video a few hours later and it wouldn't open. I tried opening other videos, same thing. Only thing that changed was the update. So I tried running the updater to see if anything weird happens and I got this.

Untitled

Same thing with admin privileges.

Went back to 814 and everything is back to normal.

Whats is your cpu?

Whats is your cpu?

i5-3320

That's because of changes c602b48 which affect 64bit build

So I can only use the 32 bit build from now on? No workarounds?

Will we still get mpv-x86_64 builds alongside the mpv-x86_64-v3 builds?

Also, shouldn't your current 64 bit builds be labeled mpv-x86_64-v3 instead of mpv-x86_64?

You may want to put this information in the README since I'm sure a lot of people will be confused why they updated and their mpv stops working all of a sudden like I did.

Obegg commented

Same for me.

i7-4770

image

For now, yes. But, if many people want to use 64bit but stuck on older cpu (2012 and below), I can consider build & release archive that's compatible with older cpu.

The x86-64-v3 level enables AVX, AVX2, BMI2, MOVBE, XSAVE and other modern instructions which benefit modern cpu

Obegg commented

if many people want to use 64bit but stuck on older cpu (2012 and below)

I'm stuck on old CPU and would love a build that's compatible.

Same for me.

Looks like your CPU doesn't have AVX so you have to go back to an older build or use the 32-bit builds from now on.

But, if many people want to use 64bit but stuck on older cpu (2012 and below), I can consider build & release archive that's compatible with older cpu.

Count me in for that! I know that means you will have to do 3 builds, but a LOT of users, even with new CPUs that don't have AVX will need the x86-64 builds to continue alongside the x86-64-v3 builds.

According to this: Even in 2020, Intel still produced brand new CPU's without AVX/AVX2. 10th-gen cheaper processors that were sold only 2 years ago!

10th gen Pentiums and Celerons don't have AVX/AVX2 and that's way newer than my Ivy Bridge!

https://ark.intel.com/content/www/us/en/ark/products/199285/...

https://ark.intel.com/content/www/us/en/ark/products/199290/...

AVX2 is supported with i3s:

https://ark.intel.com/content/www/us/en/ark/products/199283/...

https://news.ycombinator.com/item?id=24578591

Obegg commented

I guess the problem will be how to identify which CPU should receive the v3 update and which CPU should not receive it, am I right @shinchiro ?

I guess the problem will be how to identify which CPU should receive the v3 update and which CPU should not receive it, am I right

It's probably as simple as you pick the one for your CPU and it just updates itself with the same builds.

Obegg commented

I guess the problem will be how to identify which CPU should receive the v3 update and which CPU should not receive it, am I right

It's probably as simple as you pick the one for your CPU and it just updates itself with the same builds.

What do you mean? Every user has to manually "opt-in" for that? uh, no, I don't like that.

What do you mean? Every user has to manually "opt-in" for that? uh, no, I don't like that.

I mean shinchiro offers 3 builds, you pick the one that works with your CPU and it just keeps updating itself with that build series.

There's no easier solution.

Obegg commented

you pick the one that works with your CPU

I'm sorry, I'm against the idea that you will have to manually pick one, I rather it be chosen for me.

  1. You expect every user to understand/care about the error and choose the correct version?
  2. It means that EVERY USER will have to manually choose the correct version, does that seems reasonable to you?

@Obegg I am not going to fight about this. As long as x86-64 builds continue, I will be happy.

you pick the one that works with your CPU

I'm sorry, I'm against the idea that you will have to manually pick one, I rather it be chosen for me.

  1. You expect every user to understand/care about the error and choose the correct version?
  2. It means that EVERY USER will have to manually choose the correct version, does that seems reasonable to you?

Yes, that seems reasonable. Do you know how many programs already offer 32-bit and 64-bit options? There is one extra option for newer CPUs now, that's it. Every user already has to pick between 32-bit and 64-bit. If one more option is too complicated for you, are you sure this is the right media player for you? The target audience for mpv is power users, and power users such as myself actually really appreciate the new third option offered. Please don't take this away from us because you want to be hand-fed everything.

Ah so that's why it wasn't launching. I'm on Piledriver which has AVX but no AVX2.

I dont know x86-64-v3 actually largely depend on AVX2 availability. Btw, old 64bit will have usual mpv-x86_64* naming while "modern" 64bit will have mpv-x86_64-v3* naming. The updater and ffmpeg still broken atm

Well that sucks, I was using this + yt-dlp on a C2D laptop since it couldn't handle playing videos on the browser properly.

Well that sucks, I was using this + yt-dlp on a C2D laptop since it couldn't handle playing videos on the browser properly.

This won't drop any older compatibility, it just offers another selection for people with newer CPUs. The only issue is the 64-bit version generated for 20220821 accidentally excludes the older compatibility, so just wait for tomorrow's build to be generated or use the previous build.

I have Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz 2.59 GHz
Which was released in 2015 according to a google search.
And I'm still getting this error.
So maybe this doesn't affect only cpu's older than 2012?

I would also appreciate a compatible build.

But for me mpv updated fine without the error if I changed the update check to weekly instead of daily.
Any insights on that?

But ffmpeg download still isn't working and I'm getting a "cannot index into null array" error for that.

I have Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz 2.59 GHz Which was released in 2015 according to a google search. And I'm still getting this error. So maybe this doesn't affect only cpu's older than 2012?

easy way to know ur cpu compatibility is opening CPU-Z or other similar program and check the instructions panel for avx or avx2. For the build one vote for 3 version.
for cannot 'index into null array' we need to wait for the updater script to be fixed

I have Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz 2.59 GHz Which was released in 2015 according to a google search. And I'm still getting this error. So maybe this doesn't affect only cpu's older than 2012?

easy way to know ur cpu compatibility is opening CPU-Z or other similar program and check the instructions panel for avx or avx2. For the build one vote for 3 version. for cannot 'index into null array' we need to wait for the updater script to be fixed

Thanks for the info,
I have both avx and avx2 in my instructions panel.
Then I guess my problem is with the updater script (cannot index into null array).

@shinchiro
Does this require a new issue, or does it get covered by the current issue?

I've fixed the ffmpeg and updater script. You need to wait tomorrow for GH action to generate new build. Please delete old settings.xml and ffmpeg

Thanks

It works fine now, but I'm getting this error when I ran updater.bat after successfully updating mpv.

You are already using latest ffmpeg build -- ffmpeg-x86_64-git-9c7a8a85.7z ffmpeg-x86_64-v3-git-9c7a8a85.7z
Remove-Item : Cannot find path 'C:\Program Files\MPV\MPV-EASY Player\mpv\ffmpeg-x86_64-git-9c7a8a85.7z' because it
does not exist.
At C:\Program Files\MPV\MPV-EASY Player\mpv\installer\updater.ps1:261 char:13
+             Remove-Item -Force $archive
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Program File...git-9c7a8a85.7z:String) [Remove-Item], ItemNotFoundEx
   ception
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand

Remove-Item : Cannot find path 'C:\Program Files\MPV\MPV-EASY Player\mpv\ffmpeg-x86_64-v3-git-9c7a8a85.7z' because it
does not exist.
At C:\Program Files\MPV\MPV-EASY Player\mpv\installer\updater.ps1:261 char:13
+             Remove-Item -Force $archive
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Program File...git-9c7a8a85.7z:String) [Remove-Item], ItemNotFoundEx
   ception
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand

Operation completed

I deleted the settings file and tried again.
And now the Cannot index into null array error is back if I choose daily updates.
And getting this error for ffmpeg

Downloading ffmpeg-x86_64-git-9c7a8a85.7z ffmpeg-x86_64-v3-git-9c7a8a85.7z
Specified method is not supported.

nvm, just figured out that v3 was the modern version.
It works fine for me when using v3.

I've tried both x86_64 and x86_64-v3 and I still can't open mpv, Does it mean I'll have to use the 32bit from now on?(32-bit works fine btw)

I've tried both x86_64 and x86_64-v3 and I still can't open mpv, Does it mean I'll have to use the 32bit from now on?(32-bit works fine btw)

Can't believe I had to scramble around the github to find out why suddenly newer mpv doesn't run on my system for whatever stupid reason. Just why.

Also same result for me. Tried both x86_64 and x86_64-v3 on my AMD Phenom(tm) II X4 925, mpv doesn't launch at all.

Edit: The weekly release on sourceforge should have separate downloads as well. Let the original download be the old gcc. Put new v3 releases into x86_64-v3 on another folder so users with old cpu won't get screwed by this bullshit that had no idea what's coming to them.

New mpv works even better with my Ryzen 5 3700x after update because I got AVX and AVX2 (using v3).

But I got a problem with a mini PC I use with the TV:
Screenshot 2022-08-26 172734
I tried the version without v3 because I don't have any of AVX, AVX2, BMI2, MOVBE, XSAVE in the mini pc.
mpv does not start so I'm stuck with the last working 64bit version

Thank you for your hard work to improve things.

Try with today's build

Try with today's build

Works fine now thanks!

Try with today's build
It works perfectly.

Thank you for your hard work to improve things.

Try with today's build

Can confirm it works. Thank you for fixing.

Can be closed. I made a wiki to explain difference of x86_64 variant
https://github.com/shinchiro/mpv-winbuild-cmake/wiki/Difference-between-x86_64-and-x86_64-v3

I made a wiki to explain difference of x86_64 variant

@shinchiro Some of them (sse3/4 etc.) are x86_64-v2.