OS: Win7
Version: 0.1.2
I set up an invention list, then decided to go back and remove a few stalls and ride types I found to be superfluous. Upon going back to the invention list, the game immediately crashes, with Windows washing out the screen and giving a "openrct2.exe has stopped responding" popup (the latter of which can be seen in the below image). This only happens for rides and stalls; removing paths and scenery did not cause a crash.

Steps to reproduce:
You haven't specified the commit/build.
Are you on release ("stable") or develop?
Stable, as far as I know; I never went out of my way to use some experimental version.
The main menu says build: 8069a04, whatever that means for your question.
That means you're on develop, an old build (18 days) at that. The invention list has been overhauled just yesterday. Could you try a recent build?
Is there an auto-update system (ie within the program, like a browser 'check for updates'), or do I need to redownload and reinstall?
There is an unofficial launcher that does exactly that.
I managed to reproduce it on 61ddbd918b3086caa2ed8ac6df060481d97c736c.
The launcher broke horribly for me, but I updated with a manual install of the latest on the "releases" page (0e7c0f7), and the crash persists.
Also, the invention list (I checked right before actually attempting the crash) did not look any different; was this overhaul entirely on the backend?
It does not look different because you used the release build and the change that @AaronVanGeffen spoke of was made after that release. It's also mostly a front-end change, but in C that does not always say much.
Is there a place to get that build (without having to do something insane like compile it myself)?
Still present in 61ddbd918
>>> bt full
#0 0x0000555555784a22 in research_rides_setup () at ../src/openrct2-ui/windows/EditorInventionsList.cpp:215
ride_base_type = 4 '\004'
object_index = 8 '\b'
ride_entry = 0x0
master_found = false
research = 0x5555562702f2 <gResearchItems+50>
#1 0x0000555555784ccb in research_always_researched_setup () at ../src/openrct2-ui/windows/EditorInventionsList.cpp:311
No locals.
#2 0x000055555578506c in window_editor_inventions_list_open () at ../src/openrct2-ui/windows/EditorInventionsList.cpp:442
w = 0x0
#3 0x0000555555757108 in WindowManager::OpenWindow (this=0x55555683f9f0, wc=43 '+') at ../src/openrct2-ui/WindowManager.cpp:57
No locals.
#4 0x000055555580f312 in context_open_window (wc=43 '+') at ../src/openrct2/Context.cpp:1030
windowManager = 0x55555683f9f0
#5 0x0000555555783ea9 in window_editor_bottom_toolbar_jump_forward_to_invention_list_set_up () at ../src/openrct2-ui/windows/EditorBottomToolbar.cpp:256
No locals.
#6 0x000055555578410a in window_editor_bottom_toolbar_mouseup (w=0x55555624ef40 <g_window_list+2496>, widgetIndex=3) at ../src/openrct2-ui/windows/EditorBottomToolbar.cpp:322
No locals.
#7 0x0000555555881f78 in window_event_mouse_up_call (w=0x55555624ef40 <g_window_list+2496>, widgetIndex=3) at ../src/openrct2/interface/Window.cpp:1924
No locals.
#8 0x000055555577a2c7 in input_state_widget_pressed (x=1374, y=813, state=2, widgetIndex=3, w=0x55555624ef40 <g_window_list+2496>, widget=0x5555561417a0 <window_editor_bottom_toolbar_widgets+96>) at ../src/openrct2-ui/input/MouseInput.cpp:1357
cursor_w_class = 2 '\002'
cursor_w_number = 0
cursor_widgetIndex = 3
cursor_w = 0x55555624ef40 <g_window_list+2496>
#9 0x00005555557779ea in game_handle_input_mouse (x=1374, y=813, state=2) at ../src/openrct2-ui/input/MouseInput.cpp:340
w = 0x55555624ef40 <g_window_list+2496>
widget = 0x5555561417a0 <window_editor_bottom_toolbar_widgets+96>
widgetIndex = 3
#10 0x000055555577727c in game_handle_input () at ../src/openrct2-ui/input/MouseInput.cpp:126
x = 1374
y = 813
state = 2
#11 0x0000555555757bff in WindowManager::HandleInput (this=0x55555683f9f0) at ../src/openrct2-ui/WindowManager.cpp:440
No locals.
#12 0x000055555580f5bc in context_handle_input () at ../src/openrct2/Context.cpp:1078
windowManager = 0x55555683f9f0
#13 0x0000555555819658 in game_update () at ../src/openrct2/Game.cpp:430
numUpdates = 1
#14 0x0000555555811da6 in OpenRCT2::Context::Update (this=0x555556bdce20) at ../src/openrct2/Context.cpp:782
currentUpdateTick = 27641811
#15 0x0000555555811c43 in OpenRCT2::Context::RunVariableFrame (this=0x555556bdce20) at ../src/openrct2/Context.cpp:739
currentTick = 27641811
draw = true
elapsed = 17
#16 0x0000555555811a68 in OpenRCT2::Context::RunFrame (this=0x555556bdce20) at ../src/openrct2/Context.cpp:676
useVariableFrame = true
#17 0x00005555558119f1 in OpenRCT2::Context::RunGameLoop (this=0x555556bdce20) at ../src/openrct2/Context.cpp:651
No locals.
#18 0x000055555581180d in OpenRCT2::Context::Launch (this=0x555556bdce20) at ../src/openrct2/Context.cpp:627
No locals.
#19 0x00005555558105f1 in OpenRCT2::Context::RunOpenRCT2 (this=0x555556bdce20, argc=1, argv=0x7fffffffcc38) at ../src/openrct2/Context.cpp:172
No locals.
#20 0x000055555574de15 in main (argc=1, argv=0x7fffffffcc38) at ../src/openrct2-ui/Ui.cpp:60
env = 0x5555567fecc0
audioContext = 0x5555568087b0
uiContext = 0x55555683db90
context = 0x555556bdce20
runGame = 1
@ReikaKalseki There's no need to get that, really. The bug in both in release and develop, and I can reproduce it, so it's now up to us (or someone else who can program) to solve it.
or someone else who can program
I only know Java, Lua, C#, and C (from most to least skill), so I am not much help here. :P
I see a mention above of "separate ride" (presumably vs car type on one ride); I can say that not all the crash-triggering things are sub-elements of an overarching type.
@janisozaur So it looks like ride_entry is a nullptr at the moment it's accessed.
@mtesseracttech Yes, which in turn is caused by the research entry not being removed properly when deselecting it in the object selection window.
Most helpful comment
There is an unofficial launcher that does exactly that.