Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Camera regions triggering client crash #423

Open
DoobesURU opened this issue Aug 29, 2024 · 2 comments · May be fixed by #432
Open

Camera regions triggering client crash #423

DoobesURU opened this issue Aug 29, 2024 · 2 comments · May be fixed by #432
Labels

Comments

@DoobesURU
Copy link
Contributor

Not sure if this is due to a larger imported Age like the city/Ae'gura (where I'm finding this crash happens quite a bit; many things are needlessly duplicated too), but I've been getting this error when entering certain camera regions:

UruLive.1.918 - 5b7f39f - Internal.Release
OS: Windows 10 Home Edition Professional (Build 19045)
CPU: AMD FX(tm)-4300 Quad-Core Processor            
RAM: 16384 MiB

Stack Trace:
Level 00: plClient!plVirtualCam1::StartTransition (File: plVirtualCamNeu.cpp:1870)
Level 01: plClient!plVirtualCam1::PushCamera (File: plVirtualCamNeu.cpp:1590)
Level 02: plClient!plVirtualCam1::MsgReceive (File: plVirtualCamNeu.cpp:1334)
Level 03: plClient!plDispatch::IMsgDispatch (File: plDispatch.cpp:370)
Level 04: plClient!plDispatch::MsgSend (File: plDispatch.cpp:501)
Level 05: plClient!plClient::IUpdate (File: plClient.cpp:1618)
Level 06: plClient!plClient::MainLoop (File: plClient.cpp:1529)
Level 07: plClient!WinMain (File: winmain.cpp:1308)
Level 08: plClient!__scrt_common_main_seh (File: exe_common.inl:288)
Level 09: KERNEL32!BaseThreadInitThunk
@dpogue
Copy link
Member

dpogue commented Aug 29, 2024

It looks like this might be caused by a CameraModifier without a brain (which presumably korman should not export).

The crashing line in Plasma is when it accesses the brain here: https://github.com/H-uru/Plasma/blob/d7363e6367de6365861ee4a46cfa66f559e4f287/Sources/Plasma/FeatureLib/pfCamera/plVirtualCamNeu.cpp#L1870

@DoobesURU
Copy link
Contributor Author

DoobesURU commented Sep 3, 2024

Digging into the PRPs, I found that a handful of cameras had two brains instead of no brain. It appears to happen with similarly-named cameras (eg DefaultCam, DefaultCam.001, DefaultCam.002, etc). The camera objects with the extra numbers at the end receive two brains: "DefaultCam.001" and "DefaultCam_001".

So my guess is it's a blip in a renaming scheme for objects with decimals?

EDIT: Nevermind. Seems that's normal for follow cameras. I'll keep digging.

EDIT 2: It appears one of the camera brains has a null plKey in the <brain> portion of the PRC; specifically, the one with the decimal and not the underscore. So, follow cameras with the decimals after the name, or any cameras that require two entries, are "half brain-dead". 😛

EDIT 3: Both camera modifiers are missing the <transforms> as well.

@Hoikas Hoikas added the crash label Dec 17, 2024
Hoikas added a commit to Hoikas/korman that referenced this issue Dec 17, 2024
All `plCameraModifier` objects *must* have a brain or the client will
crash dereferencing a null pointer. This commit audits all
`plCameraModifier` creations and ensures that we are using a camera that
will have a brain. There are probably better ways to do this, but I am
le tired.
@Hoikas Hoikas linked a pull request Dec 17, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants