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

Whole client crashes when installing a pack from ATLauncher #845

Closed
1 task done
BorealBlizzard opened this issue Feb 11, 2023 · 6 comments · Fixed by #1523
Closed
1 task done

Whole client crashes when installing a pack from ATLauncher #845

BorealBlizzard opened this issue Feb 11, 2023 · 6 comments · Fixed by #1523
Labels
bug Something isn't working
Milestone

Comments

@BorealBlizzard
Copy link

Operating System

Linux

Version of Prism Launcher

Prism Launcher 6.3

Version of Qt

Qt 6.4.2

Description of bug

When downloading the Yogscast Complete Pack through ATLauncher the whole programs crashes when at the extracting stage.

Steps to reproduce

Add Instance
ATLaucher
Search "Yogs"
Yogscast Complete Pack
OK
Select Recommended (Also crashed when only installing what was checked by defualt)
Install
Wait For Crash

Suspected cause

No response

This issue is unique

  • I have searched the issue tracker and did not find an issue describing my bug.
@BorealBlizzard BorealBlizzard added the bug Something isn't working label Feb 11, 2023
@Ryex
Copy link
Contributor

Ryex commented Feb 11, 2023

can you provide the Prismlauncher-0.log from the launcher data directory?
It will help in ensuring we are dealing with the same issue if we replicate it.

@HyperSoop
Copy link
Contributor

Can reproduce
PrismLauncher-0.log

@BorealBlizzard
Copy link
Author

PrismLauncher-0.log

@Emily9121
Copy link

Same issue, with Windows 10 21H2 running Prism Launcher 6.3 and also tried with 5.2 without success.

PrismLauncher-3.log
PrismLauncher-1.log

@DioEgizio
Copy link
Member

can reproduce

@Scrumplex
Copy link
Member

Scrumplex commented Mar 27, 2023

This happens because of a race condition when loading component information. Specifically, if LiteLoader is used in a modpack.

If there is no locally cached metadata, the code will not wait for the load task to finish and will try to access version information right away.

Relevant code:

detecting LiteLoader here:

if (liteLoaderMap.contains(lib.md5)) {
auto ver = getComponentVersion("com.mumfrey.liteloader", liteLoaderMap.value(lib.md5));
if (ver) {
componentsToInstall.insert("com.mumfrey.liteloader", ver);
continue;
}
}

loading metadata here:

static Meta::Version::Ptr getComponentVersion(const QString& uid, const QString& version)
{
auto vlist = APPLICATION->metadataIndex()->get(uid);
if (!vlist)
return {};
if (!vlist->isLoaded())
vlist->load(Net::Mode::Online);
auto ver = vlist->getVersion(version);
if (!ver)
return {};
if (!ver->isLoaded())
ver->load(Net::Mode::Online);
return ver;
}

using metadata here: (source of segfault)

if(componentVersion->data()->mainClass != QString("")) {

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants