lordmulder / LameXP

Audio Encoder Front-End
http://lordmulder.github.io/LameXP
Other
184 stars 18 forks source link

Unable to create .FLACs in latest 4.21 Final-1, Build 2382) #115

Open KevinHoSmith opened 6 months ago

KevinHoSmith commented 6 months ago

Prior to installation through the Windows application of the latest version (4.21 Final-1, Build 2382), I'm not sure what version I was running because I allowed automatic updates since installing LameXP_v4.17_Final-1_2018-11-10.Release-Static.Build-2188. Since allowing updating to the latest version, no files I throw at LameXP will be converted to .FLAC using the same setting I've been using for years without incident (max compression, I have tried using 32-bit .WAV files, 24-bit .WAV files, and .MP3 files. LameXP goes through "Filtering" and then abruptly stops with a "Failed" notification. In each case, I have confirmed using the same files on another Windows machine where I did not allow LameXP to update to 4.21 that there's nothing wrong with the files I'm feeding in and they all convert just fine. I have saved a few of the logs from my unsuccessful attempts, but want first to see if this is just a bug that is known and will be soon fixed. Thank you. I'm a complete newbie to GitHub but couldn't find another forum to ask about this.

KevinHoSmith commented 6 months ago

P.S. The .WAV files I convert are almost exclusively created by the latest versions of Audacity and are @ 44,100 vs. 48,000

KevinHoSmith commented 6 months ago

P.P.S. FLAC encoder apparently fails with "Exited with code: 0xC000001D"

lordmulder commented 6 months ago

Exit code 0xC000001D would indicate STATUS_ILLEGAL_INSTRUCTION.

It means that the application (i.e. FLAC encoder) executed an instruction that your CPU (or operating system) does not support.

Of course, this is not supposed to happen.

Can you please run LameXP with option --console and post the log up to "All extracted." ???

KevinHoSmith commented 6 months ago

Thanks! Right now, I’m chdsk’ing my Windows drove and the drive on which the file to be converted was on. Is the “console” option the same as printing out the log that’s offered after the failures? If so, I can quickly (when chkdsk gives me my computer back) send you a couple of those logs. In the meantime, I’ve run SFC twice with no complaints the second time. I’ve uninstalled LameXP and reinstalled the new version clean. Same result. I’m beginning to suspect that Windows Security has screwed around with LameXP’s access to drive folders. I’ll check that too when I regain control of my computer. I’m amazed to hear directly from you after all these years of enjoying your website and programs. Thank you!- KevinOn Jan 11, 2024, at 6:01 PM, LoRd_MuldeR @.***> wrote: Exit code 0xC000001D would indicate STATUS_ILLEGAL_INSTRUCTION. It means application executed instruction that your CPU (or operating system) does not support. Can you please run LameXP with option --console and post the log?

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

KevinHoSmith commented 6 months ago

Inshould add that the logs I viewed fro the failures all bombed out when FLAC itself was executing. BTW, does LameXP convert 32-bit .WAV files to 24-bit before converting them? The log seemed to suggest that. I’ve been feeding it 32-bit WAVs because that’s what Audacity seems natively to be working with and I figured I’d feed LameXP the purest form I could. I have to produce 24-bit WAVs anyway to feed to WaveCorrectorPro, but create the FLACs for raw backup vs. saving the original Audacity files. Thanks again!!  - KevinOn Jan 11, 2024, at 6:01 PM, LoRd_MuldeR @.***> wrote: Exit code 0xC000001D would indicate STATUS_ILLEGAL_INSTRUCTION. It means application executed instruction that your CPU (or operating system) does not support. Can you please run LameXP with option --console and post the log?

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

KevinHoSmith commented 6 months ago

Per LordMulder's request, here is my log from running --console: LameXP - Audio Encoder Front-End v4.21 Final-1 (Build #2382) Copyright (c) 2004-2024 LoRd_MuldeR mulder2@gmx.de. Some rights reserved. Built on 2023-12-29 at 17:01:35 with MSVC 2019.11 for Win-x86.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License http://www.gnu.org/. Note that this program is distributed with ABSOLUTELY NO WARRANTY.

This application is powerd by MUtils library v1.14 (2023-12-29, 17:01:18).

Command-Line Arguments: --console

CPU vendor id : AuthenticAMD (Intel=0) CPU brand string : AMD A4-7300 APU with Radeon HD Graphics CPU signature : Family=21, Model=19, Stepping=1 CPU architecture : x64 (64-Bit) CPU capabilities : CMOV=1, MMX=1, SSE=1, SSE2=1, SSE3=1, SSSE3=1 CPU capabilities : SSE4.1=1, SSE4.2=1, AVX=1, AVX2=0, FMA3=1, LZCNT=1 Number of CPU's : 2

Using Qt v4.8.7 [2021-12-07], Static, Windows msvc release full-config Compiled with Qt v4.8.7, Windows msvc release full-config

Running on Windows 10 or Windows Server 2016 (NT v10.0.19045-sp0).

Failed to resolve function: ntdll::wine_get_version Library Path: C:/Program Files (x86)/MuldeR/LameXP

SetConsoleIcon() has failed! [Error: 0x00004001] Process token elevation type: Limited -> not elevated.

Selected CPU type is: CPU_TYPE_X64_SSE (x86_64) Extracting file: curl.exe -> curl.exe Extracting file: mac.x64-sse2.exe -> mac.exe Extracting file: avs2wav.exe -> avs2wav.exe Extracting file: curl.crt -> curl.crt Extracting file: dcaenc.exe -> dcaenc.exe Extracting file: faad.sse2.exe -> faad.exe Extracting file: flac.x64-sse2.exe -> flac.exe Extracting file: lame.x64-sse2.exe -> lame.exe Extracting file: aften.x64.exe -> aften.exe Extracting file: mediainfo.x64-sse2.exe -> mediainfo.exe Extracting file: mpcdec.exe -> mpcdec.exe Extracting file: mpg123.x64-sse2.exe -> mpg123.exe Extracting file: oggdec.sse2.exe -> oggdec.exe Extracting file: oggenc2.x64.exe -> oggenc2.exe Extracting file: opusdec.x64-sse2.exe -> opusdec.exe Extracting file: opusenc.x64-sse2.exe -> opusenc.exe Extracting file: refalac.x64.exe -> refalac.exe Extracting file: shorten.exe -> shorten.exe Extracting file: sox.sse2.exe -> sox.exe Extracting file: speexdec.exe -> speexdec.exe Extracting file: tta.exe -> tta.exe Extracting file: valdec.exe -> valdec.exe Extracting file: verify.exe -> verify.exe Extracting file: wma2wav.exe -> wma2wav.exe Extracting file: wupdate.exe -> wupdate.exe Extracting file: wvunpack.x64-sse2.exe -> wvunpack.exe All extracted.

Extracting the tools took 4.435 seconds (OK).

Registering translation: LameXP_BG.qm = български (20) [0] Registering translation: LameXP_DE.qm = Deutsch (42) [0] Registering translation: LameXP_EN.qm = English (31) [0] Registering translation: LameXP_ES.qm = Español (111) [0] Registering translation: LameXP_FR.qm = Française (37) [0] Registering translation: LameXP_HU.qm = Magyar (50) [0] Registering translation: LameXP_IT.qm = Italiano (58) [0] Registering translation: LameXP_JA.qm = 日本語 (59) [0] Registering translation: LameXP_KR.qm = 한국어 (66) [0] Registering translation: LameXP_PL.qm = Polski (90) [0] Registering translation: LameXP_RU.qm = Русский (96) [0] Registering translation: LameXP_SV.qm = Svenska (114) [0] Registering translation: LameXP_TW.qm = 繁体中文 (25) [208] Registering translation: LameXP_UK.qm = Українська (129) [0] Registering translation: LameXP_ZH.qm = 简体中文 (25) [44] All registered.

NeroAAC encoder binaries not found -> Encoding support will be disabled!

FhgAacEnc encoder binaries not found -> Encoding support will be disabled!

FdkAacEnc encoder binaries not found -> Encoding support will be disabled!

QAAC encoder binaries not found -> Encoding support will be disabled!

QAACx64 encoder binaries not found -> Encoding support will be disabled!

[Locale] Language: English (31) Country is: UnitedStates (225) Script is: Default (0)

Analyzing: E:/Music_info/The New Colony Six/The New Colony Six - 1968 - Revelations/The New Colony Six - 1968 - Revelations_unprocessed.32-bit.wav All files added.

Initializing encoding process... DiskSpace observer started! CPU observer started! RAM observer started! Process thread {06346f80-b699-4914-b0df-4e39f796ad26} has started. Process thread is done. Running jobs: 0

============================================ here is the log file that I get when clicking on the failed file:

LameXP v4.21 (Build #2382), compiled on 2023-12-29 at 17:01:35


C:/Users/KEVINH~1/AppData/Local/Temp/df7082dc52db5ecc/lxp_sox.exe --i "E:\Music_info\The New Colony Six\The New Colony Six - 1968 - Revelations\The New Colony Six - 1968 - Revelations_unprocessed.32-bit.wav"

Input File : 'E:\Music_info\The New Colony Six\The New Colony Six - 1968 - Revelations\The New Colony Six - 1968 - Revelations_unprocessed.32-bit.wav' File Size : 537M Bit Rate : 2.82M Sample Encoding: 32-bit Signed Integer PCM

Exited with code: 0x0000


C:/Users/KEVINH~1/AppData/Local/Temp/df7082dc52db5ecc/lxp_sox.exe -V3 -S --guard --temp . "E:\Music_info\The New Colony Six\The New Colony Six - 1968 - Revelations\The New Colony Six - 1968 - Revelations_unprocessed.32-bit.wav" -b 24 C:\Users\KEVINH~1\AppData\Local\Temp\df7082dc52db5ecc\ca0955b3e8fba47c.wav

C:\Users\KEVINH~1\AppData\Local\Temp\df7082dc52db5ecc\lxp_sox.exe: SoX v14.4.2 C:\Users\KEVINH~1\AppData\Local\Temp\df7082dc52db5ecc\lxp_sox.exe INFO formats: detected file format type wav' Input File : 'E:\Music_info\The New Colony Six\The New Colony Six - 1968 - Revelations\The New Colony Six - 1968 - Revelations_unprocessed.32-bit.wav' Channels : 2 Sample Rate : 44100 Precision : 32-bit Duration : 00:25:22.85 = 67157760 samples = 114214 CDDA sectors File Size : 537M Bit Rate : 2.82M Sample Encoding: 32-bit Signed Integer PCM Endian Type : little Reverse Nibbles: no Reverse Bits : no C:\Users\KEVINH~1\AppData\Local\Temp\df7082dc52db5ecc\lxp_sox.exe INFO sox: OverwritingC:\Users\KEVINH~1\AppData\Local\Temp\df7082dc52db5ecc\ca0955b3e8fba47c.wav' Output File : 'C:\Users\KEVINH~1\AppData\Local\Temp\df7082dc52db5ecc\ca0955b3e8fba47c.wav' Channels : 2 Sample Rate : 44100 Precision : 24-bit Duration : 00:25:22.85 = 67157760 samples = 114214 CDDA sectors Sample Encoding: 24-bit Signed Integer PCM Endian Type : little Reverse Nibbles: no Reverse Bits : no Comment : 'Processed by SoX' C:\Users\KEVINH~1\AppData\Local\Temp\df7082dc52db5ecc\lxp_sox.exe INFO sox: effects chain: input 44100Hz 2 channels C:\Users\KEVINH~1\AppData\Local\Temp\df7082dc52db5ecc\lxp_sox.exe INFO sox: effects chain: gain 44100Hz 2 channels C:\Users\KEVINH~1\AppData\Local\Temp\df7082dc52db5ecc\lxp_sox.exe INFO sox: effects chain: output 44100Hz 2 channels Done.

Exited with code: 0x0000


C:/Users/KEVINH~1/AppData/Local/Temp/df7082dc52db5ecc/lxp_flac.exe -8 --channel-map=none -f -o "E:\Music_info\The New Colony Six\The New Colony Six - 1968 - Revelations\The New Colony Six - 1968 - Revelations_unprocessed.32-bit.flac" C:\Users\KEVINH~1\AppData\Local\Temp\df7082dc52db5ecc\ca0955b3e8fba47c.wav

flac 1.4.3 Copyright (C) 2000-2009 Josh Coalson, 2011-2023 Xiph.Org Foundation flac comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Type `flac' for details. ca0955b3e8fba47c.wav: WARNING: skipping unknown chunk 'fact' (use --keep-foreign-metadata to keep)

Exited with code: 0xC000001D

KevinHoSmith commented 6 months ago

I just noticed "post the log up to "All extracted." ???" in your posted request, but it was not in your e-mail and I don't really know what it means. I copied and pasted everything in the console log and then clicked on the failed file and copied and pasted everything in that log. Let me know if I've done something wrong or need to do something else.

KevinHoSmith commented 6 months ago

Per some general suggestions I had seen elsewhere about code 0xC000001D, I also tried running LameXP as an administrator and same results. I've complete the chkdsk on my c: drive and same results. I'm running chkdsk now on the e: drive where the files should have been created (LameXP is set to save in same directory as the source file came from ). UPDATE: the E: drive checks out fine. My next step tomorrow will be to uninstall the latest version and install my older version and see if the failures persist.

KevinHoSmith commented 6 months ago

Just checking to make sure you got what you asked for. I didn’t understand “All extracted.” Thanks. On Jan 11, 2024, at 6:01 PM, LoRd_MuldeR @.***> wrote: Exit code 0xC000001D would indicate STATUS_ILLEGAL_INSTRUCTION. It means application executed instruction that your CPU (or operating system) does not support. Can you please run LameXP with option --console and post the log?

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

KevinHoSmith commented 6 months ago

UPDATE: I uninstalled the latest version 4.21 and re-installed 4.17, declining to update. My FLAC encoding went perfectly. If you can show me where I can download and try 4.20, 4.19, 4.18, I'll be happy to install those and see if the failures begin at any particular version. FYI, the last FLAC I successfully created had been on August 12, 2023 and I was always checked for and allowing updating, so that should tell you which version I last successfully used.

lordmulder commented 6 months ago

I just noticed "post the log up to "All extracted." ???" in your posted request, but it was not in your e-mail and I don't really know what it means. I copied and pasted everything in the console log and then clicked on the failed file and copied and pasted everything in that log. Let me know if I've done something wrong or need to do something else.

I meant that I would like to see everything from the beginning of the log up to the line that reads "All extracted".

Here is the relevant part:

LameXP - Audio Encoder Front-End v4.21 Final-1 (Build #2382)
Built on 2023-12-29 at 17:01:35 with MSVC 2019.11 for Win-x86.
…
CPU vendor id : AuthenticAMD (Intel=0)
CPU brand string : AMD A4-7300 APU with Radeon HD Graphics
CPU signature : Family=21, Model=19, Stepping=1
CPU architecture : x64 (64-Bit)
CPU capabilities : CMOV=1, MMX=1, SSE=1, SSE2=1, SSE3=1, SSSE3=1
CPU capabilities : SSE4.1=1, SSE4.2=1, AVX=1, AVX2=0, FMA3=1, LZCNT=1
…
Selected CPU type is: CPU_TYPE_X64_SSE (x86_64)
Extracting file: flac.x64-sse2.exe -> flac.exe 👈👈👈
…
All extracted.

So, you are running on a 64-Bit CPU, but your CPU does not support AVX2.

Consequently, LameXP selects the "x64-sse2" (i.e. 64-Bit) binary of FLAC, rather than the "x64-avx2" (i.e. 64-Bit + AVX2) one.

[!NOTE] x64 implies SSE2 support, because the original AMD64 architecture adopted Intel's SSE and SSE2 as core instructions. Support for AVX and AVX2 is optional, so we choose the AVX2-optimized binary only if the CPU supports it.

So far, that looks perfectly fine!

But there is no reason why the "x64-sse2" binary should crash with "illegal instruction" on your CPU 😕

Anyway, try running LameXP with option --cpu-no-x64 to force it using the "x86-i686" (32-Bit) binary and see if it helps...

Per some general suggestions I had seen elsewhere about code 0xC000001D, I also tried running LameXP as an administrator and same results. I've complete the chkdsk on my c: drive and same results. I'm running chkdsk now on the e: drive where the files should have been created (LameXP is set to save in same directory as the source file came from).

As said before, exit code 0xC000001D (aka STATUS_ILLEGAL_INSTRUCTION) indicates that the program crashed because it tried to execute some CPU instruction that your specific CPU – or operating system – does not support.

This is totally unrelated to user permissions. Also, checking your disk with chkdsk certainly doesn't hurt, but won't help here 😄

If you can show me where I can download and try 4.20, 4.19, 4.18, I'll be happy to install those and see if the failures begin at any particular version. FYI, the last FLAC I successfully created had been on August 12, 2023 and I was always checked for and allowing updating, so that should tell you which version I last successfully used.

What about the official project web-site? 😏

https://github.com/lordmulder/LameXP/releases https://sourceforge.net/projects/lamexp/files/Old%20Releases/

[!TIP] If necessary, scroll down to see older releases!

KevinHoSmith commented 6 months ago

Thanks so much. I'll check back once I'm finished the tasks I know I can accomplish with 4.17! I think this is my warning that a 9-year-old computer probably has served its time. :(

lordmulder commented 6 months ago

I think this is my warning that a 9-year-old computer probably has served its time. :(

Anyway, the "x64-sse2" binary is definitely supposed to work on your type of CPU 😅

I'm not exactly sure what is going on here, because I have built FLAC from the sources as usual, using the latest Intel C++ compiler and the appropriate settings. For the "x64-sse2" binary no additional instructions sets have been enabled – except for SSE and SSE2, which are implicitly enabled for 64-Bit targets (can't even be turned off). Might be a bug in the new version of FLAC, might be a bug in latest Intel C++ compiler, or maybe I have done something wrong?

(either that, or there is something "weird" with your specific CPU model)

I have even tried on my old and crusty laptop with a CPU that does not have AVX, but everything worked as expected:

hwinfo-notebook

lamexp_flac

🤔


Could you post a screenshot of HWiNFO "System Summary" from your system?

Does the problem only occur with the FLAC encoder? What about the MP3 (LAME) or Opus encoders?

KevinHoSmith commented 6 months ago

Yes, only with the FLAC encoder (I haven't tried Opus though, only MP3 and OGG) and I've checked that my processor does not support AVX2, only AVX. I only run the free version of HWINFO64 v7.68-5300 and I only see the Sensor Status page and don't know how to get the System Summary. Per another Web site, I checked the System Information on my Steam installation (which is where I confirmed that I don't have AVX2 capability). Here is that printout, followed by the Windows System Information:

Computer Information: Manufacturer: System manufacturer Model: System Product Name Form Factor: Desktop No Touch Input Detected Processor Information: CPU Vendor: AuthenticAMD CPU Brand: AMD A4-7300 APU with Radeon HD Graphics CPU Family: 0x15 CPU Model: 0x13 CPU Stepping: 0x1 CPU Type: 0x0 Speed: 3791 MHz 2 logical processors 1 physical processors Hyper-threading: Supported FCMOV: Supported SSE2: Supported SSE3: Supported SSSE3: Supported SSE4a: Supported SSE41: Supported SSE42: Supported AES: Supported AVX: Supported AVX2: Unsupported <================================= AVX512F: Unsupported AVX512PF: Unsupported AVX512ER: Unsupported AVX512CD: Unsupported AVX512VNNI: Unsupported SHA: Unsupported CMPXCHG16B: Supported LAHF/SAHF: Supported PrefetchW: Unsupported Operating System Version: Windows 10 (64 bit) NTFS: Supported Crypto Provider Codes: Supported 311 0x0 0x0 0x0 Video Card: Driver: AMD Radeon HD 8470D DirectX Driver Name: aticfx32.dll Driver Version: 15.201.1151.1008 DirectX Driver Version: 8.17.10.1404 Driver Date: 11 4 2015 OpenGL Version: 3.2 Desktop Color Depth: 32 bits per pixel Monitor Refresh Rate: 60 Hz DirectX Card: AMD Radeon HD 8470D VendorID: 0x1002 DeviceID: 0x9996 Revision Not Detected Number of Monitors: 2 Number of Logical Video Cards: 2 No SLI or Crossfire Detected Primary Display Resolution: 1360 x 768 Desktop Resolution: 2640 x 1223 Primary Display Size: 34.88" x 19.61" (40.00" diag), 88.6cm x 49.8cm (101.6cm diag) Primary Bus Type Not Detected Primary VRAM: 768 MB Supported MSAA Modes: 2x 4x 8x Sound card: Audio device: Speakers (Realtek High Definiti Memory: RAM: 11462 Mb VR Hardware: VR Headset: None detected Miscellaneous: UI Language: English Media Type: DVD Total Hard Disk Space Available: 2113968 MB Largest Free Hard Disk Block: 256567 MB OS Install Date: Sep 11 2020 Game Controller: None detected MAC Address hash: [redacted] Storage: Disk serial number hash: [redacted] Number of SSDs: 0 Number of HDDs: 3 HDD sizes: 1000G,1000G,1000G Number of removable drives: 0

Also, here's the Windows System Information screen if that helps: OS Name Microsoft Windows 10 Pro Version 10.0.19045 Build 19045 Other OS Description Not Available OS Manufacturer Microsoft Corporation System Name KHS2015 System Manufacturer System manufacturer System Model System Product Name System Type x64-based PC System SKU SKU Processor AMD A4-7300 APU with Radeon HD Graphics, 3800 Mhz, 1 Core(s), 2 Logical Processor(s) BIOS Version/Date American Megatrends Inc. 3001, 3/9/2016 SMBIOS Version 2.7 Embedded Controller Version 255.255 BIOS Mode Legacy BaseBoard Manufacturer ASUSTeK COMPUTER INC. BaseBoard Product A88XM-A BaseBoard Version Rev X.0x Platform Role Desktop Secure Boot State Unsupported PCR7 Configuration Binding Not Possible Windows Directory C:\WINDOWS System Directory C:\WINDOWS\system32 Boot Device \Device\HarddiskVolume1 Locale United States Hardware Abstraction Layer Version = "10.0.19041.3636" User Name [redacted] Time Zone Central Standard Time Installed Physical Memory (RAM) 12.0 GB Total Physical Memory 11.2 GB Available Physical Memory 5.98 GB Total Virtual Memory 12.9 GB Available Virtual Memory 7.41 GB Page File Space 1.69 GB Page File C:\pagefile.sys Kernel DMA Protection Off Virtualization-based security Not enabled Device Encryption Support Reasons for failed automatic device encryption: TPM is not usable, PCR7 binding is not supported, Hardware Security Test Interface failed and device is not Modern Standby, Un-allowed DMA capable bus/device(s) detected, Disabled by policy, TPM is not usable Hyper-V - VM Monitor Mode Extensions Yes Hyper-V - Second Level Address Translation Extensions Yes Hyper-V - Virtualization Enabled in Firmware Yes Hyper-V - Data Execution Protection Yes

KevinHoSmith commented 6 months ago

I'm not a major techie, but am I kinda understanding correctly that even though my CPU is old and does not support AVX2, the FLAC encoder OUGHT to be giving me better options than requiring me to force it into 32-bit mode?

lordmulder commented 6 months ago

Sorry for late reply, I have been away.

I'm not a major techie, but am I kinda understanding correctly that even though my CPU is old and does not support AVX2, the FLAC encoder OUGHT to be giving me better options than requiring me to force it into 32-bit mode?

When I build the FLAC encoder from the source codes, I create different binaries. Currently, LameXP contains four FLAC binaries: "x86-i686" (generic 32-Bit), "x86-sse2" (32-Bit with SSE2 enabled), "x64-sse2" (64-Bit with SSE2 enabled) and "x64-avx2" (64-Bit with AVX2 enabled). At startup, LameXP will select the FLAC binary that best matches your specific CPU.

There is no separate 64-Bit binary without SSE2, because 64-Bit implies SSE and SSE2 support.


Now, from your LameXP log, we can see that LameXP correctly detects that you have a 64-Bit CPU without AVX2 support. Consequently LameXP correctly selects the "x64-sse2" (64-Bit with SSE2 enabled) binary. That's all perfectly fine!

Why the "x64-sse2" (64-Bit with SSE2 enabled) binary has problem on your CPU, this I don't know 🤔

As mentioned before, on my old laptop that also does not support AVX or AVX2, the same binary works just fine.

So, yes, the "x64-sse2" binary ought to work on your CPU, but it somehow doesn't 😖


By forcing LameXP to select the "x86-sse2" (32-Bit) binary you might be able to work around the problem!

The 32-Bit binary is quite a bit slower than 64-Bit variant, but should produce the same result...

. I only run the free version of HWINFO64 v7.68-5300 and I only see the Sensor Status page and don't know how to get the System Summary.

When HWiNFO64 is starting up, make sure "Summary only" is checked 😏

grafik

KevinHoSmith commented 6 months ago

Thanks . Do you still need the HWInfo Summary? I'm planning a last-minute trip so will not be doing further computer experimenting for a month or so. Also, will you make a bug report to the FLAC people? Or does this anomaly not warrant it?

lordmulder commented 6 months ago

Do you still need the HWInfo Summary?

It could help, yes.

Also, will you make a bug report to the FLAC people? Or does this anomaly not warrant it?

I'm not sure it is a bug in FLAC code 🤔

Could be a bug in the compiler. Or maybe I messed something up. Will do some more experiments, when I have time.

Does MP3 (LAME) and Opus encoders (64-Bit SSE2 version) work okay for you?

KevinHoSmith commented 6 months ago

image

Thank you for all your attention to this. I really appreciate it.

lordmulder commented 6 months ago

So, your CPU supports all instruction set extensions that my old laptop does, and even some more that my old laptop doesn't. At this point we probably need to figure out which specific instruction causes the crash...

lordmulder commented 6 months ago

Can you please try this? 😄

  1. Install WinDbg (Windows Debugger), if you haven't already
  2. Download flac.x64-sse2.exe
  3. Run flac.x64-sse2.exe inside of WinDbg as follows: grafik

    Be sure to select the correct executable file. Also, file input.wav must exist in your selected start directory.

  4. When program breaks on int 3 (debug exception), just click the "Go" button: grafik
  5. Program will probably crash with Illegal instruction soon: grafik
  6. Finally, please make screenshot with Disassembly view, so we can see where exactly it crashed! In the example above it crashed on the vmovups instruction, but this will be different for you, most certainly. (just as an example, I ran the AVX512 binary on my CPU that does not support AVX512 😏)
KevinHoSmith commented 6 months ago

After running it once with mistyped "Arguments:" (I had a period between "flac" and "input"), when I exited and re-ran it with corrected field entries, I hit "Debug" and nothing happens except the opening of a blank black window. Here's a screenshot of my input info. Both the downloaded executable (which I did not install, merely downloaded from your link) and the image.wav file are in the same subdirectory.

image

KevinHoSmith commented 6 months ago

Just ran it again and this appeared in a new black window, but nothing else has happened except a couple "Threads" appeared in that box in the lower right hand corner. image

lordmulder commented 6 months ago

Right after you start the program (e.g. FLAC) from within WinDbg it will break with int 3, as mentioned above.

Just click the "Go" button (in WinDbg window) in order to continue the execution!

We expect that the program will crash shortly after that. Go back to the WinDbg window and see for more information...

KevinHoSmith commented 6 months ago

That's my problem. It's no longer "breaking" with anything. It even created a 0-byte out.flac file the last time and I couldn't tell if anything was continuing to happen, so I hit "Stop Debugging" and exited WinDbg and started over. Now, NOTHING's happening when I hit "Debug" (except the opening of the blank black window).

lordmulder commented 6 months ago

I suggest to start over. Be sure the correct executable is selected, arguments is exactly as it should be, start directory points to a valid existing directory, and a proper Wave file input.wav exists in that directory.

KevinHoSmith commented 6 months ago

Do you mean re-boot? I've started over the WinDbg several times after I appeared to have exited it properly. As I'm sitting here watching the blank window, it appears that (in the lower right window of WinDbg) 5 "stacks" have opened and one "thread" but nothing at all is appearing in the upper white window where stuff appeared before and where I'm expecting to find that INT 3. I've checked and double-checked all my paths and arguments. I'll reboot I guess, but I'm in the middle of trip planning.

lordmulder commented 6 months ago

Nope, should not be necessary to reboot. Just try like this:

https://github.com/lordmulder/LameXP/assets/470590/0fcc4c57-7e0f-4dab-8372-28779a5715bd

KevinHoSmith commented 6 months ago

just rebooted. I see now that your example requires that c:\temp be my "Start Directory"? Is that really necessary? Do I need to move the FLAC executable and the input.wav to that directory to try again? Did I need to download and install something other than the WinDbg Preview that your link downloaded? As a compromise with messing with my boot drive, I created a E:\TEMP and moved both the input.wav and the FLAC executable into that directory and I'm still getting the blank screen result. Maybe the Preview version of WinDbg is not enough? But I actually got an INT 3 the first time (and only the first time) I tried it but I have an error in the Arguments field, long since corrected. BTW, none of the Processes in Windows Task Manager show any CPU usage now and a total of only 113.3 MB of memory, so it does seem as though the WinDbg session is stalled.

lordmulder commented 6 months ago

I see now that your example requires that c:\temp be my "Start Directory"?

You can use whatever works for you 😃

(just be sure that the specified directory exists, it is writable and it contains the input WAV file of the specified name)

Did I need to download and install something other than the WinDbg Preview that your link downloaded?

Nope.

I'm still getting the blank screen result

Yes, the application (e.g. FLAC) starts with a "blank" console window, because it will be suspended with int 3 (debug break) immediately after it has been started. Just go back to WinDbg window and click "Go" icon. See video above!

KevinHoSmith commented 6 months ago

see above. I'm sorry I edited my comment before seeing your latest. I'm still letting it run but I don't think anything is happening. Yes, the new TEMP writeable (that's I got the 2 files in there :) ) Should I be running WinDbg as Administrator? Just tried -- same result.

KevinHoSmith commented 6 months ago

Do you attribute any significance to FLAC reporting a "Warning" about a WAVE with type 1 but 2-bytes per sample? All my WAVs are created from latest version of Audacity with default settings (32-bit selected). Of course, I'm not even getting that notice now.

KevinHoSmith commented 6 months ago

In your video, lots of stuff is happening in the main WinDbg window--as happened to me the first time I ran it. Nothing has appeared in that Main WinDbg window since then. I've watched the video 4 times! I'm trying, brother! :)

lordmulder commented 6 months ago
  1. Completely exit WinDbg, just to be sure.
  2. Start WinDbg again, then launch the executable (i.e. flac.x64-sse2.exe) exactly as shown here: 297177150-316378d9-eb86-4697-94f0-83ed206e4e47 But, of course, adjust the paths as needed! The "start directory" can be whatever you like, but it must exist, must be writable and shall contain the input.wav file.
  3. FLAC will start and show an "empty" terminal window, because it is suspended immediately after start.
  4. Go back to WinDbg window. You will see that the program was suspended with int 3 (debug break). That is perfectly normal. It happens every time. You can ignore it. Just press "Go" button in WinDbg window to proceed.
  5. Shortly after that, we expect the program to crash with Illegal instruction error. That's what we want to see. So, if that happens, please go to the "Disassembly" view and make a screenshot of the exact instruction where it crashed.
KevinHoSmith commented 6 months ago

image RESULT: image

lordmulder commented 6 months ago

Can't see the "Command" view. It appears you have closed it? Go to "View" and re-enable the "Command" view.

You want to enable the "Disassembly" view too.

KevinHoSmith commented 6 months ago

Aha! Let me start again with those "Views" enabled.

KevinHoSmith commented 6 months ago

Happy now? :)

image

KevinHoSmith commented 6 months ago

Here's a little more of the Disassembly window with the shaded line near the top: image

KevinHoSmith commented 6 months ago

On that last try above, I then noticed in the black window that it threw an error because the out.flac file already existed and the -f parameter had not been used. Therefore, I exited the program, deleted the zero-byte out.flac file and ran everything again. Here were the results: image

And again, a zerobyte out.flac file was created

KevinHoSmith commented 6 months ago

May I exit WinDbg now and take a break? Hope so, cause I'm swamped (as I'm sure you are too). I really appreciate this! - Kevin

lordmulder commented 6 months ago

Ah, yeah, there we have it. It apparently crashed on the vpermpd instruction :hushed:

That is "Permute Double Precision Floating-Point Elements" instruction and it is an AVX2 or AVX512 instruction: https://www.felixcloutier.com/x86/vpermpd

Now I have no idea how this instruction ended up in the lame.x64-sse2.exe binary ???

Also, why does it not cause any problem on my old laptop, that clearly does not support AVX, AVX2 or AVX512 ???

KevinHoSmith commented 6 months ago

I'm sure that's useful info to many, but I'm only a retired lawyer and it's Greek to me (except that I understand it's an instruction that apparently shouldn't be there)! LOL BTW, I followed your video literally and highlighted the INT 3 before I hit GO -- hope that didn't screw up this experiment!

Maybe my computer PRETENDS to be smarter than your laptop does!!!! LOL

lordmulder commented 6 months ago

Well, the lame.x64-sse2.exe certainly must not contain any instruction that would require a CPU with AVX, AVX2 or AVX512. But, apparently, it does. Because, on your machine, it apparently crashed while trying to execute an vpermpd instruction, which is an AVX2 instruction. Weird thing is, that same binary works just fine on my old laptop 😕

BTW, I followed your video literally and highlighted the INT 3 before I hit GO -- hope that didn't screw up this experiment!

That's totally irrelevant 😆

KevinHoSmith commented 6 months ago

Permission to exit for the time being? Please!!!! I'll continue to monitor this site in case something new is required of me. Thank you again.

KevinHoSmith commented 6 months ago

REMINDER: My CPU DOES support AVX, but not the other 2.

lordmulder commented 6 months ago

At this point I'm out of ideas. Sorry. Maybe I will do some more investigation when I have more time...

REMINDER: My CPU DOES support AVX, but not the other 2.

CPU in my old laptop does not even support AVX. This would make my old laptop even more likely to crash, if any AVX, AVX2 or even AVX512 instructions was encountered. Still, it didn't crash. And I currently I don't see how that's possible.

KevinHoSmith commented 6 months ago

What would say is the likelihood that FLAC will correct this apparent error in the version that you'll be creating your next update from? IOW, how long should I plan on having to keep re-installing your old version in order to create .FLAC on this machine? Just trying to plan a work schedule. My newer laptop has no problem so I always have that as an alternative.

lordmulder commented 6 months ago

I don't even know if that is a problem in FLAC code. Could be something "messed up" with my build process, or maybe a strange quirk in the Intel C++ compiler that I used to build FLAC. It's really not clear at this point...

KevinHoSmith commented 6 months ago

<<CPU in my old laptop does not even support AVX. This would make my old laptop even more likely to crash, if any AVX, AVX2 or even AVX512 instructions was encountered. Still, it didn't crash. And I currently I don't see how that's possible.>>

Hence, my snarky comment that perhaps it's because my CPU presents itself as more capable than yours, leading to the programmer's mistake. Not bad for a lawyer, huh? :) IOW, perhaps my AVX support convinces the program that I can handle the instruction, while it KNOWS yours cannot?