EchoEffect buffer overflow
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mixxx |
Fix Released
|
Critical
|
RJ Skerry-Ryan |
Bug Description
found using address sanitizer, happened when i turned the delay knob all the way left. unfortunately I was not running under a debugger
Warning [Main]: "EffectParamete
Warning [Main]: "EffectParamete
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Main]: "EffectParamete
Warning [Main]: "EffectParamete
Warning [Main]: "EffectParamete
Warning [Engine]: Delay buffer requested is larger than max buffer!
Warning [Engine]: Delay buffer requested is larger than max buffer!
=======
==50919==ERROR: AddressSanitizer: heap-buffer-
READ of size 4 at 0x00017e57ac00 thread T42
#0 0x10646847d in EchoEffect:
#1 0x1064688f4 in PerChannelEffec
#2 0x10664c2d6 in EngineEffect:
#3 0x106651608 in EngineEffectCha
#4 0x106654757 in EngineEffectRac
#5 0x106658199 in EngineEffectsMa
#6 0x10668357f in EngineDeck:
#7 0x1066a728e in EngineMaster:
#8 0x1066a7ec7 in EngineMaster:
#9 0x10706d901 in SoundDevicePort
#10 0x10706a042 in (anonymous namespace)
#11 0x1097c1679 in AdaptingOutputO
#12 0x1097c09b2 in PaUtil_
#13 0x1097c5ef3 in AudioIOProc (libportaudio.
#14 0x11e0396e8 in AUConverterBase
#15 0x11e14a223 in AUBase:
#16 0x11e149f23 in AUBase:
#17 0x11e03c8c8 in AUHAL::
#18 0x7fffaabf1d8c in HALC_ProxyIOCon
#19 0x7fffaabf0666 in HALC_ProxyIOCon
#20 0x7fffaabf038a in HALB_IOThread:
#21 0x7fffc07d9aaa in _pthread_body (libsystem_
#22 0x7fffc07d99f6 in _pthread_start (libsystem_
#23 0x7fffc07d91fc in thread_start (libsystem_
Changed in mixxx: | |
importance: | Undecided → Critical |
milestone: | none → 2.1.0 |
status: | New → Confirmed |
Changed in mixxx: | |
status: | Fix Committed → Fix Released |
Ok, it's pretty straightforward -- at 96kHz the delay buffer is greater than MAX_BUFFER_LEN (2 seconds max vs 813ms). The code checks this case and warns about it but doesn't properly guard against reads past the end (I don't immediately see the bad read though).