[Windows XP] v2.6.12 (to v2.6.18) hangs when trying to convert audio

Started by mm0359, August 23, 2016, 06:41:24 AM

Previous topic - Next topic

mm0359

Windows: XP. (win32)

"avidemux.exe",

v2.6.8v2,
v2.6.9v2 + usp10.dll,
v2.6.10 + usp10.dll,
v2.6.11 + usp10.dll:
work fine.

v2.6.12 + usp10.dll,
v2.6.13 + usp10.dll,
v2.6.14:
Audio "Copy" works fine.
But converting mp2 + ts to Faac/MP3 (for example) + ts/mp4 (for example) starts, then immediately hangs (0% cpu). Need to kill avidemux.exe process.

Issue 1: Do not hang.
Issue 2: Convert audio.

Windows Vista works fine:
Windows XP only issue.

mm0359

Quote from: mm0359 on August 23, 2016, 06:41:24 AM
v2.6.12 + usp10.dll,
v2.6.13 + usp10.dll:
[...] immediately hangs (0% cpu). Need to kill avidemux.exe process.

v2.6.12 + usp10.dll,
avidemux_2.6.13_r160823_win32.exe nightly + usp10.dll
admlog.txt ends with (2) EXCEPTION_ACCESS_VIOLATION
...
[FF] Saving
[saveLoop] avg fps=50000
[initUI] Muxer, creating UI, video duration is 00:16:59,240
Paint event
Paint event
Paint event
[startThread] Starting thread...
[startThread] Thread created and started
Saving crash file to ...\avidemux\crash.py
Scripting video streams
Scripting segments
Scripting markers
Scripting post-processing
Scripting video encoder
Scripting video filters
Scripting audio tracks
Scripting muxer
EXCEPTION_ACCESS_VIOLATION
wscanf  [msvcrt.dll]
Crash Dump for ExceptionFilter
EXCEPTION_ACCESS_VIOLATION
wscanf  [msvcrt.dll]
ADM_setCrashHook  [libADM_core6.dll]
ADM_setCrashHook  [libADM_core6.dll]
XcptFilter  [msvcrt.dll]
endthreadex  [msvcrt.dll]
GetModuleFileNameA  [kernel32.dll]


mm0359

v2.6.12 + usp10.dll, on WinXP:
ftr, copying avidemux.exe + libADM_core6.dll from v2.6.11,
works around this issue.
At least, this narrows down (somewhat) where the issue actually is.

v2.6.13 + usp10.dll, on WinXP:
More dlls would need to be copied, I gave up for the time being.

mm0359

Quote from: mm0359 on August 26, 2016, 08:46:06 PM
v2.6.12 + usp10.dll, on WinXP:
ftr, copying avidemux.exe + libADM_core6.dll from v2.6.11,
works around this issue.
At least, this narrows down (somewhat) where the issue actually is.

Works
  Avidemux v2.6.11 (0)  // Release (2016.01.29)

Crashes
  Avidemux v2.6.11 (160210_f4e7b7ff081)  // Debug nightly
admlog.txt ends with
...
[FF] Saving
[saveLoop] avg fps=50000
[initUI] Muxer, creating UI, video duration is 00:16:59,240
[startThread] Starting thread...
[startThread] Thread created and started


SysInternals Process Monitor confirms last actions:
1- Create a thread. (From avidemux + 0x9b88 > mx_ffTS + 0x18f2 > coreMuxer6 + 0x36ef > coreAudio6 + 0x1d0c > coreUtils6 + 0x99f7.)
2- Write the end of admlog.txt.
3- Crashes.


Ftr, copying avidemux.exe (only) from v2.6.11,
works around this issue.
At least, this narrows down (somewhat more) where the issue actually is.




(Currently,) Starting at
https://github.com/mean00/avidemux2/commits/master?page=12

Commits on Feb 9, 2016

[i]f4e7b7f[/i]
    [Muxer/webm] Also allow VP9 and Opus
    mean committed Feb 9, 2016

    [win/installer] Add webm
    mean committed Feb 9, 2016

    [muxer] Add webm
    mean committed Feb 9, 2016

    [core/ffmpeg] Enable webm muxer
    mean committed Feb 9, 2016

Commits on Feb 8, 2016

    [jobs] Use the right signal
    mean committed Feb 8, 2016

Commits on Feb 7, 2016

    [editor/audio] Display in 00:00:22.22 rather than in microseconds
    mean committed Feb 7, 2016

    [Demux/ts/Audio] dont take dts unknown as valid seek point
    mean committed Feb 7, 2016

    [Demux/Ts] Cosmetic
    mean committed Feb 7, 2016

Commits on Feb 6, 2016

    [build] We are not in release mode anymore
    mean committed Feb 6, 2016

Commits on Feb 5, 2016

    [bootStrap] Set the env variable so that qtselect picks the right flaââ,¬Â¦
    mean committed Feb 5, 2016

    [ffmpeg] Remove 2.7.2
    mean committed Feb 5, 2016

Commits on Feb 2, 2016

[i]dd4a5e0[/i]
    [core] update ffmpeg to 2.7.6
    mean committed Feb 2, 2016

Commits on Jan 29, 2016

[i]372a52b[/i]
    [installer] update whats new
    mean committed Jan 29, 2016

[i]a75a7e1[/i]
    [2.6.11] Release
    mean committed Jan 29, 2016


Likely(!?) trigger/culprit: FFmpeg 2.7.2 to 2.7.6 upgrade.
Is it possible to rebuild a win32_debug 2.6.11_r160202, to test&confirm?

Ftr, in case it would be related/relevant,
FFmpeg doesn't seem to say which Windows versions were/are supported...
Windows XP Support And Intel QSV
Making Zeranoe builds work under XP & XP builds by rogerdpack
Vista support also dropped?

"Or", is it a (triggered) compiler issue (here) too?

mm0359

Quote from: mm0359 on August 24, 2016, 11:47:58 PM
admlog.txt ends with (2) EXCEPTION_ACCESS_VIOLATION

Ftr, switch(++) to clang from gcc would not fix this issue (yet).

Minor change in stack:
first ADM_setCrashHook become UnhandledExceptionFilter + installSigHandler()

  Avidemux v2.6.13 (160827_3bbe49d1383) .
  Avidemux v2.6.13 (160828_bc4c29c4e69) .

...
Scripting muxer
EXCEPTION_ACCESS_VIOLATION
wscanf  [msvcrt.dll]
Crash Dump for ExceptionFilter
EXCEPTION_ACCESS_VIOLATION
wscanf  [msvcrt.dll]
ADM_setCrashHook  [libADM_core6.dll]
installSigHandler()  [libADM_core6.dll]
UnhandledExceptionFilter  [kernel32.dll]
XcptFilter  [msvcrt.dll]
endthreadex  [msvcrt.dll]
GetModuleFileNameA  [kernel32.dll]


mm0359

Ftr, upgrade(++) of gcc to 4.9.4 from 4.8.3 would not fix this issue (yet).

mean

The underlying problem is probably 16 bytes stack alignment
It is workarounded more or less successfully on win32

Works by design on all 64 bits OS

mm0359

Quote from: mean on October 03, 2016, 01:18:52 PM
The underlying problem is probably 16 bytes stack alignment

Fwiw,

Windows Data Alignment on IPF, x86, and x64
QuoteWith that said, there are situations on the x86 and x64 platform where unaligned access will generate a general-protection exception. (Note that these are general-protection exceptions, not alignment-check exceptions.) This is when the misalignment occurs on a 128-bit typeââ,¬â€specifically, SSE/SSE2-based types.

The WinXP computer I'm using has MMX(EXT) and SSE(2), but no (S)SSE3.
Setting cpu mask to 0 doesn't help.

Do you think it's SSE(2)-related? If yes, shouldn't mask=0 work around it?
Is it "expected" that Vista/(S)SSE3 succeeds?

mm0359

(Still) Crashes
  Avidemux v2.6.14 (0)  // release

(Still) Crashes
  Avidemux v2.6.14 (161024_8b5bfb9baa1) .  // nightly

mm0359

Quote from: mm0359 on October 24, 2016, 10:43:30 PM
(Still) Crashes
  Avidemux v2.6.14 (161024_8b5bfb9baa1) .  // nightly

Work:
Copy/FDK/Dummy
Copy/Faac/Dummy
null/Faac/Dummy (very slow(er), but anyway)

Hang with exception:
Copy/FDK/MP4
Copy/Faac/TS

Fwiw, the Dummy Muxer works (around?) this issue.

mm0359

Fwiw, same exception after upgrading Windows XP to SP3 (from "SP2").

mm0359

Installed Debug Diagnostic Tool 1.2:


  Avidemux v2.6.14 (161024_8b5bfb9baa1) .


Type of Analysis Performed   Crash Analysis

Thread 8 - System ID 5588
Entry point   msvcrt!_endthreadex+3a

Full Call Stack

Function     Arg 1     Arg 2     Arg 3     Arg 4   Source
msvcrt!_output+655     082cfc98     0061eb14     082cfce8     00000000   
msvcrt!_vsnprintf+2f     65755980     000003ff     0061eb14     082cfce8   
libADM_core6!ADM_info2+27     0061ec99     0061eb14     00000000     030156b0   
avidemux!ZN25ADM_edAudioTrackFromVideo12getPCMPacketEPfjPjPy+2dc     7c90d04c     7c90e43f     082cfd30     00000001   
ntdll!_LdrpInitialize+246     082cfe0c     00000023     00000023     05f3a8a0   
avidemux!ZN22AUDMAudioFilter_Bridge4fillEjPfP10AUD_Status+35     082cfe54     7c90e900     04ff3108     082cfecc   
ntdll!RtlFreeHeap+1e9     04ff39f8     040fbc38     65741b50     082cfef8   
libADM_core6!ZN8admMutex6unlockEv+13     05f3a8a0     00414951     05fb6090     082cff24   
avidemux!ZN22ADM_audioAccess_thread9runActionEv+b1     05ffafe8     05f3a8a0     0000ca3f     05f32c90   
msvcrt!_endthreadex+a9     05f32c90     05f3a8a0     0000ca3f     05f32c90   
kernel32!BaseThreadStart+37     77c3a341     05f32c90     00000000     00000000   

Exception Information
...
the assembly instruction at msvcrt!_output+655 in ...\msvcrt.dll from Microsoft Corporation has caused an access violation exception (0xC0000005) when trying to read from memory location 0x00000000 on thread 8

Symbol File Name:  ...\msvcrt.pdb\7BCF30D8C91B4F1B85FA4E55896250111\msvcrt.pdb


NB: This example is with my LoadTst.ts file.

PS: "getPCMPacket", as in the playing issue ;->