obsproject / obsproject/obs-studio

Crash on boot for particular `basic/scenes/Untitled.json`

Open
#10,682 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
76.4k
Forks
10.2k
Avg merge
4d 23h
Merged PRs (30d)
12

Description

Operating System Info

macOS 14

Other OS

No response

OBS Studio Version

30.1.2

OBS Studio Version (Other)

No response

OBS Studio Log URL

https://obsproject.com/logs/PoDNSobWHFldo2Nz

OBS Studio Crash Log URL

No crash logs generated

Expected Behavior

OBS not to crash on startup.

I don't think those OBS logs will be super useful -- I looked at all my logs and they don't seem to have anything related to the crash.

I also found making a more than few websocket requests back to back consistently creates bad Untitled.json files which cause my OBS to crash on startup.

Current Behavior

OBS crashes on startup with seemingly no relevant logs.

Steps to Reproduce

I got here from programmatically making a number of (valid) websocket requests, but I found I the source of. the crash to be in the Untitled.json that OBS created.

  1. Starting from a fresh install
  2. Open OBS so files in ~/Library/Application Support/obs-studio/ are created
  3. Replace ~/Library/Application Support/obs-studio/basic/scenes/Untitled.json with the following contents:
{
    "AuxAudioDevice1": {
        "prev_ver": 503382018,
        "name": "Mic/Aux",
        "uuid": "44d819e4-36e9-42d8-adac-d94909f8dfec",
        "id": "coreaudio_input_capture",
        "versioned_id": "coreaudio_input_capture",
        "settings": {
            "device_id": "default"
        },
        "mixers": 255,
        "sync": 0,
        "flags": 0,
        "volume": 1.0,
        "balance": 0.5,
        "enabled": true,
        "muted": false,
        "push-to-mute": false,
        "push-to-mute-delay": 0,
        "push-to-talk": false,
        "push-to-talk-delay": 0,
        "hotkeys": {
            "libobs.mute": [],
            "libobs.unmute": [],
            "libobs.push-to-mute": [],
            "libobs.push-to-talk": []
        },
        "deinterlace_mode": 0,
        "deinterlace_field_order": 0,
        "monitoring_type": 0,
        "private_settings": {}
    },
    "current_scene": "",
    "current_program_scene": "",
    "scene_order": [],
    "name": "Untitled",
    "sources": [
        {
            "prev_ver": 503382018,
            "name": "Countdown Timer • 0b391f21-41d9-4600-8f00-9d0287851f4c",
            "uuid": "48c11126-c4e9-406d-88e5-829edda05999",
            "id": "text_ft2_source",
            "versioned_id": "text_ft2_source_v2",
            "settings": {
                "color": 4294967295,
                "text": "4:08",
                "font": {
                    "face": "Avenir",
                    "size": 120
                },
                "color1": 4278198255,
                "color2": 4278190185
            },
            "mixers": 0,
            "sync": 0,
            "flags": 0,
            "volume": 1.0,
            "balance": 0.5,
            "enabled": true,
            "muted": false,
            "push-to-mute": false,
            "push-to-mute-delay": 0,
            "push-to-talk": false,
            "push-to-talk-delay": 0,
            "hotkeys": {},
            "deinterlace_mode": 0,
            "deinterlace_field_order": 0,
            "monitoring_type": 0,
            "private_settings": {}
        },
        {
            "prev_ver": 503382018,
            "name": "Execution Text • 0b391f21-41d9-4600-8f00-9d0287851f4c",
            "uuid": "9d260956-d599-4c97-8c2f-882552682978",
            "id": "text_ft2_source",
            "versioned_id": "text_ft2_source_v2",
            "settings": {
                "color": 4294967295,
                "text": "Execution",
                "font": {
                    "face": "Avenir",
                    "size": 120
                },
                "color1": 4278198255,
                "color2": 4278190185
            },
            "mixers": 0,
            "sync": 0,
            "flags": 0,
            "volume": 1.0,
            "balance": 0.5,
            "enabled": true,
            "muted": false,
            "push-to-mute": false,
            "push-to-mute-delay": 0,
            "push-to-talk": false,
            "push-to-talk-delay": 0,
            "hotkeys": {},
            "deinterlace_mode": 0,
            "deinterlace_field_order": 0,
            "monitoring_type": 0,
            "private_settings": {}
        }
    ],
    "groups": [],
    "quick_transitions": [
        {
            "name": "Cut",
            "duration": 300,
            "hotkeys": [],
            "id": 1,
            "fade_to_black": false
        },
        {
            "name": "Fade",
            "duration": 300,
            "hotkeys": [],
            "id": 2,
            "fade_to_black": false
        },
        {
            "name": "Fade",
            "duration": 300,
            "hotkeys": [],
            "id": 3,
            "fade_to_black": true
        }
    ],
    "transitions": [],
    "saved_projectors": [],
    "current_transition": "Fade",
    "transition_duration": 300,
    "preview_locked": false,
    "scaling_enabled": false,
    "scaling_level": 0,
    "scaling_off_x": 0.0,
    "scaling_off_y": 0.0,
    "virtual-camera": {
        "type2": 3
    },
    "modules": {
        "scripts-tool": [],
        "output-timer": {
            "streamTimerHours": 0,
            "streamTimerMinutes": 0,
            "streamTimerSeconds": 30,
            "recordTimerHours": 0,
            "recordTimerMinutes": 0,
            "recordTimerSeconds": 30,
            "autoStartStreamTimer": false,
            "autoStartRecordTimer": false,
            "pauseRecordTimer": true
        },
        "auto-scene-switcher": {
            "interval": 300,
            "non_matching_scene": "",
            "switch_if_not_matching": false,
            "active": false,
            "switches": []
        }
    }
}
Anything else we should know?

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the startup crash by replacing ~/Library/Application Support/obs-studio/basic/scenes/Untitled.json with the supplied contents, then trace OBS's scene-file loading during startup. Use the supplied log and crash reproduction to identify why this scene causes the application to exit; done means OBS starts without crashing and handles the file safely.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.