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

Return error when trying to close files with pending operations #8868

Merged
merged 3 commits into from
Jul 24, 2016
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions Core/HLE/sceIo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ static const int ERROR_ERRNO_FILE_ALREADY_EXISTS = 0x80010011;
static const int ERROR_MEMSTICK_DEVCTL_BAD_PARAMS = 0x80220081;
static const int ERROR_MEMSTICK_DEVCTL_TOO_MANY_CALLBACKS = 0x80220082;
static const int ERROR_KERNEL_BAD_FILE_DESCRIPTOR = 0x80020323;

static const int ERROR_KERNEL_ILLEGAL_PERMISSION = 0x800200d1;
Copy link
Collaborator

@unknownbrackets unknownbrackets Jul 24, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we use SCE_KERNEL_ERROR_ILLEGAL_PERM instead? Same value, and used other places.

-[Unknown]

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suppose so. I searched the code base for ILLEGAL_PERMISSION, didn't anticipate just "PERM"..

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah.... most of those names came from the "snapshot" commit, not sure.

-[Unknown]

static const int ERROR_KERNEL_ASYNC_BUSY = 0x80020329;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We use SCE_KERNEL_ERROR_ASYNC_BUSY already in this file for this error code.

-[Unknown]

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oops, thanks.

static const int ERROR_PGD_INVALID_HEADER = 0x80510204;

/*
Expand Down Expand Up @@ -277,11 +278,19 @@ static int __IoAllocFd(FileNode *f) {
}

static void __IoFreeFd(int fd, u32 &error) {
if (fd < PSP_MIN_FD || fd >= PSP_COUNT_FDS) {
if (fd == PSP_STDIN || fd == PSP_STDERR || fd == PSP_STDOUT) {
error = ERROR_KERNEL_ILLEGAL_PERMISSION;
} else if (fd < PSP_MIN_FD || fd >= PSP_COUNT_FDS) {
error = ERROR_KERNEL_BAD_FILE_DESCRIPTOR;
} else {
FileNode *f = __IoGetFd(fd, error);
if (f) {
// If there are pending results, don't allow closing.
if (ioManager.HasOperation(f->handle)) {
error = ERROR_KERNEL_ASYNC_BUSY;
return;
}

// Wake anyone waiting on the file before closing it.
for (size_t i = 0; i < f->waitingThreads.size(); ++i) {
HLEKernel::ResumeFromWait(f->waitingThreads[i], WAITTYPE_ASYNCIO, f->GetUID(), (int)SCE_KERNEL_ERROR_WAIT_DELETE);
Expand Down
8 changes: 7 additions & 1 deletion Windows/GPU/WindowsVulkanContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,13 @@ static VkBool32 VKAPI_CALL Vulkan_Dbg(VkDebugReportFlagsEXT msgFlags, VkDebugRep
// layout barrier. TODO: This one I should fix.
if (msgCode == 7 && startsWith(pMsg, "Cannot submit cmd buffer"))
return false;
if (msgCode == 43 && startsWith(pMsg, "At Draw time the active render"))
if (msgCode == 7 && startsWith(pMsg, "Cannot copy from an image"))
return false;
if (msgCode == 7 && startsWith(pMsg, "You cannot transition the layout"))
return false;
//if (msgCode == 43 && startsWith(pMsg, "At Draw time the active render"))
// return false;
if (msgCode == 44 && startsWith(pMsg, "At Draw time the active render"))
return false;

#ifdef _WIN32
Expand Down