pinterf / AviSynthPlus

AviSynth with improvements
http://avs-plus.net
208 stars 24 forks source link

violation "_ASSERTE(index<array_size)" on "const AVSValue& AVSValue::OPERATOR_INDEX(int index) const" #41

Open belonesox opened 4 years ago

belonesox commented 4 years ago

I see violation "_ASSERTE(index<array_size)" on "const AVSValue& AVSValue::OPERATOR_INDEX(int index) const" (actually, I see index=4 on array_size=2, array=args

  static AVSValue __cdecl Create(AVSValue args, void* user_data, IScriptEnvironment* env) {
...
    const int vtrack = args[4].AsInt(0);
    const int atrack = args[5].AsInt(0);
...

To reproduce

     audio = WavSource("wtf.wav")

( sample file to reproduce: https://drive.google.com/file/d/1NHjeJiKFPz4otu9h1x5dm-3ZB9eUNr2W/view?usp=sharing https://cloud.mail.ru/public/5eRX/5yNVrUpkr )

If I use released version of AVS+, I got crush on ffmpeg/VirtualDub exit. On debug version I got this assert violation.

pinterf commented 4 years ago

Hi, Avisynth reports "couldn't open file wtf.wav" message, do I need any special codec to open your WAV file?

belonesox commented 4 years ago

Hmm. my WAV is simple W64

Input #0, w64, from 'wtf.wav':
  Duration: 00:00:03.00, bitrate: 705 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 1 channels, s16, 705 kb/s
At least one output file must be specified 

I have installed ffdshow-tryouts...
ffdshow_rev4531_20140628.exe but in when I disable all audio codecs support in configuration I still got this assert изображение

I got this bug on several versions of AVS+, but for raising this assert I build debug-32 with vs-comminity-2019 (16) version from

commit 968aa33288c76b01ca1878e5d1638ae80fe28816 (HEAD -> master, origin/master, origin/HEAD)
Author: Pinterf <pinterfer@gmail.com>
Date:   Wed Nov 20 16:18:54 2019 +0100

    Update gitignore

BTW, I upload this debug build with CMAKE files on https://drive.google.com/open?id=15yrMwrOBqe0aU17XpvpLQ46a_bu_0WXe

I will also try to find clear Windows install to check this.

pinterf commented 4 years ago

Yep, those asserts were false alarm, they are fixed now. As a side effect I have fixed a parameter error (there is an extra "utf8" parameter in Avisynth+)

belonesox commented 4 years ago

Yes, looks like those asserts are really false positives. ffmpeg/vdub with AVS+ still contains crashes on some test AVS-projects, that successfully processed by old AVS (unfortunatelly, now no asserts fired).
I am working on minimizing this projects, to save reproduceability. BTW, what max size of demo project can be proposed? 100Mb? 1GB? 10GB? 100GB? 200GB… ?

pinterf commented 4 years ago

<1GB should be enough. Well positioned asserts can help only in obvious cases. Other real crashes (I mean e.g. a "0xC0000005 access violation" and not a well described error message or warning) are usually programming errors. Such crashes should be reported.