aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/k_auto_object.h
AgeCommit message (Collapse)Author
2023-07-15Fixes and workarounds to make UBSan happier on macOScomex
There are still some other issues not addressed here, but it's a start. Workarounds for false-positive reports: - `RasterizerAccelerated`: Put a gigantic array behind a `unique_ptr`, because UBSan has a [hardcoded limit](https://stackoverflow.com/questions/64531383/c-runtime-error-using-fsanitize-undefined-object-has-a-possibly-invalid-vp) of how big it thinks objects can be, specifically when dealing with offset-to-top values used with multiple inheritance. Hopefully this doesn't have a performance impact. - `QueryCacheBase::QueryCacheBase`: Avoid an operation that UBSan thinks is UB even though it at least arguably isn't. See the link in the comment for more information. Fixes for correct reports: - `PageTable`, `Memory`: Use `uintptr_t` values instead of pointers to avoid UB from pointer overflow (when pointer arithmetic wraps around the address space). - `KScheduler::Reload`: `thread->GetOwnerProcess()` can be `nullptr`; avoid calling methods on it in this case. (The existing code returns a garbage reference to a field, which is then passed into `LoadWatchpointArray`, and apparently it's never used, so it's harmless in practice but still triggers UBSan.) - `KAutoObject::Close`: This function calls `this->Destroy()`, which overwrites the beginning of the object with junk (specifically a free list pointer). Then it calls `this->UnregisterWithKernel()`. UBSan complains about a type mismatch because the vtable has been overwritten, and I believe this is indeed UB. `UnregisterWithKernel` also loads `m_kernel` from the 'freed' object, which seems to be technically safe (the overwriting doesn't extend as far as that field), but seems dubious. Switch to a `static` method and load `m_kernel` in advance.
2023-04-29kernel: match calls to Register and UnregisterLiam
2023-03-12kernel: prefer std::addressofLiam
2023-03-12kernel: remove kernel_Liam
2023-03-12kernel: convert KPort, KSessionLiam
2023-01-29Move to Clang Format 15Levi Behunin
Depends on https://github.com/yuzu-emu/build-environments/pull/69 clang-15 primary run
2022-06-13kernel: fix inconsistency in AutoObjectTraits macro definitionsLiam
2022-04-23general: Convert source file copyright comments over to SPDXMorph
This formats all copyright comments according to SPDX formatting guidelines. Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
2022-04-12Merge pull request #8165 from bunnei/ensure-session-port-cleanupbunnei
Kernel: Track open references to KServerPort and KServerSession.
2022-04-08hle: kernel: k_auto_object: Move unregister with kernel to after Destroy.bunnei
- Destructor is no longer invoked, so our object counting was off.
2022-04-03k_auto_object: Fix data racelat9nq
Change the memory order to acqure-release when we decrement the reference count. Prevents a race with line 89 reported by TSan.
2022-02-02general: Move deleted copy/move constructor/assignment operators to public ↵Lioncash
interface This allows for better compiler errors, where the compiler will state a copy or move couldn't occur due to the relevant function being deleted. Previously a compiler would warn about the relevant function not being accessible (which, while true, isn't as informative as it could be).
2021-12-06core: hle: kernel: k_auto_object: Add GetName method.bunnei
- Useful purely for debugging.
2021-08-25Revert "kernel: Various improvements to scheduler"bunnei
2021-08-07core: hle: kernel: k_auto_object: Add GetName method.bunnei
- Useful purely for debugging.
2021-07-20hle: kernel: Provide methods for tracking dangling kernel objects.bunnei
2021-06-06hle: kernel: KAutoObjectWithListContainer: Use boost::instrusive::rbtree.bunnei
- Fixes some crashes introduced by our common intrusive red/black tree impl.
2021-05-08kernel: Eliminate variable shadowingLioncash
Now that the large kernel refactor is merged, we can eliminate the remaining variable shadowing cases.
2021-05-05fixup! hle: kernel: Add initial impl. of KAutoObject.bunnei
2021-05-05fixup! hle: kernel: Add initial impl. of KAutoObject.bunnei
2021-05-05common: Rename NON_COPYABLE/NON_MOVABLE with YUZU_ prefix.bunnei
2021-05-05hle: kernel: Migrate to KHandleTable.bunnei
2021-05-05hle: kernel: Rename Process to KProcess.bunnei
2021-05-05hle: kernel: Remove deprecated Object class.bunnei
2021-05-05hle: kernel: Migrate more of KThread to KAutoObject.bunnei
2021-05-05hle: kernel: Add initial impl. of KAutoObject.bunnei