Page MenuHome

Blender crashes using Jack with AV Sync enabled (repeatable)
Confirmed, NormalPublicBUG

Description

System Information
Operating system: Linux-4.18.0-25-generic-x86_64-with-debian-buster-sid 64 Bits
Graphics card: GeForce GTX 1060 6GB/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 390.116

Blender Version
Broken: version: 2.81 (sub 16), branch: master, commit date: 2019-12-04 11:32, hash: rBf1aa4d18d49d

Short description of error

Blender crashes while scrubbing when AV Sync is enabled and system is using JACK audio

Exact steps for others to reproduce the error

  • open blender 2.81a with fresh config dir
  • enter prefs -> System and choose JACK as audio device
  • go to VSE, add audio clip of whatever length to at least fill the default frames (I used a standard stereo 16bit PCM .wav in this case)
  • in Timeline, enable AV Sync option
  • play the animation, and scrub around with the mouse on the timeline

It takes a while of constant scrubbing for me -- sometimes 30 seconds or even 1-2 minutes, but I can reliably make Blender crash this way. (Sometimes I stop and jump around in the timeline, left/right-arrow a little, etc... not sure if any of that is necessary.) Two crash.txt's are attached.

Event Timeline

Philipp Oeser (lichtwerk) changed the task status from Needs Triage to Confirmed.Jan 21 2020, 3:26 PM
Philipp Oeser (lichtwerk) changed the subtype of this task from "Report" to "Bug".

Can confirm in a buildbot build.
(havent built with JACK myself yet, but...confirming for now)

The crash happens as follows, when you use JACK and AV-sync, JACK transport is enabled meaning that JACK will call the sound_sync_callback, which down the road

sound_sync_callback -> sound_jack_sync_callback -> BKE_sound_jack_scene_update -> BKE_sound_play_scene -> sound_start_play_scene -> AUD_Device_play

leads to sound (in sound_start_play_scene it's scene->sound_scene) being NULL.

I figured that this is due to SceneBackup setting it so in Blender's main thread, but that's as far as I can get since I don't know what this is for. While there is a chance that sound is playing back, sound_scene should only be changed when the audio device is locked (AUD_Device_lock(sound_device); ...; AUD_Device_unlock(sound_device);), however, locking the device should be as short as possible it will cause skips, clicks, other nasty sounds, hangs, etc...