Skip to content

Commit 9a7acfa

Browse files
iljukhaputdimkanovikov
authored andcommitted
Fix BugSplat integration
Update BugSplat versioning to include Qt version in environment variables and adjust crashpad paths for Linux. Enhance logging for Crashpad initialization and handler startup.
1 parent 12a3604 commit 9a7acfa

File tree

5 files changed

+47
-19
lines changed

5 files changed

+47
-19
lines changed

.github/workflows/build_starc_linux.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ jobs:
4343
DEV_BUILD=$(git rev-list `git rev-list --tags --no-walk --max-count=1`..HEAD --count)
4444
echo "DEV_BUILD=$DEV_BUILD" >> $GITHUB_ENV
4545
if [ "$DEV_BUILD" -gt "0" ]; then
46-
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}} dev $DEV_BUILD" >> $GITHUB_ENV
46+
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}} dev $DEV_BUILD-qt5" >> $GITHUB_ENV
4747
else
48-
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}}" >> $GITHUB_ENV
48+
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}}-qt5" >> $GITHUB_ENV
4949
fi
5050
5151
- name: Install Qt
@@ -188,9 +188,9 @@ jobs:
188188
DEV_BUILD=$(git rev-list `git rev-list --tags --no-walk --max-count=1`..HEAD --count)
189189
echo "DEV_BUILD=$DEV_BUILD" >> $GITHUB_ENV
190190
if [ "$DEV_BUILD" -gt "0" ]; then
191-
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}} dev $DEV_BUILD" >> $GITHUB_ENV
191+
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}} dev $DEV_BUILD-qt6" >> $GITHUB_ENV
192192
else
193-
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}}" >> $GITHUB_ENV
193+
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}}-qt6" >> $GITHUB_ENV
194194
fi
195195
196196
- name: Install Qt

.github/workflows/build_starc_mac.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ jobs:
4343
DEV_BUILD=$(git rev-list `git rev-list --tags --no-walk --max-count=1`..HEAD --count)
4444
echo "DEV_BUILD=$DEV_BUILD" >> $GITHUB_ENV
4545
if [ "$DEV_BUILD" -gt "0" ]; then
46-
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}} dev $DEV_BUILD" >> $GITHUB_ENV
46+
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}} dev $DEV_BUILD-qt5" >> $GITHUB_ENV
4747
else
48-
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}}" >> $GITHUB_ENV
48+
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}}-qt5" >> $GITHUB_ENV
4949
fi
5050
5151
- name: Install Qt
@@ -152,9 +152,9 @@ jobs:
152152
DEV_BUILD=$(git rev-list `git rev-list --tags --no-walk --max-count=1`..HEAD --count)
153153
echo "DEV_BUILD=$DEV_BUILD" >> $GITHUB_ENV
154154
if [ "$DEV_BUILD" -gt "0" ]; then
155-
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}} dev $DEV_BUILD" >> $GITHUB_ENV
155+
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}} dev $DEV_BUILD-qt6" >> $GITHUB_ENV
156156
else
157-
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}}" >> $GITHUB_ENV
157+
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}}-qt6" >> $GITHUB_ENV
158158
fi
159159
160160
- name: Install Qt

.github/workflows/build_starc_windows.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ jobs:
4343
DEV_BUILD=$(git rev-list `git rev-list --tags --no-walk --max-count=1`..HEAD --count)
4444
echo "DEV_BUILD=$DEV_BUILD" >> $GITHUB_ENV
4545
if [ "$DEV_BUILD" -gt "0" ]; then
46-
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}} dev $DEV_BUILD" >> $GITHUB_ENV
46+
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}} dev $DEV_BUILD-qt5" >> $GITHUB_ENV
4747
else
48-
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}}" >> $GITHUB_ENV
48+
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}}-qt5" >> $GITHUB_ENV
4949
fi
5050
5151
- name: Install Qt
@@ -205,9 +205,9 @@ jobs:
205205
DEV_BUILD=$(git rev-list `git rev-list --tags --no-walk --max-count=1`..HEAD --count)
206206
echo "DEV_BUILD=$DEV_BUILD" >> $GITHUB_ENV
207207
if [ "$DEV_BUILD" -gt "0" ]; then
208-
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}} dev $DEV_BUILD" >> $GITHUB_ENV
208+
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}} dev $DEV_BUILD-qt5" >> $GITHUB_ENV
209209
else
210-
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}}" >> $GITHUB_ENV
210+
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}}-qt5" >> $GITHUB_ENV
211211
fi
212212
213213
- name: Install Qt
@@ -365,9 +365,9 @@ jobs:
365365
DEV_BUILD=$(git rev-list `git rev-list --tags --no-walk --max-count=1`..HEAD --count)
366366
echo "DEV_BUILD=$DEV_BUILD" >> $GITHUB_ENV
367367
if [ "$DEV_BUILD" -gt "0" ]; then
368-
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}} dev $DEV_BUILD" >> $GITHUB_ENV
368+
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}} dev $DEV_BUILD-qt6" >> $GITHUB_ENV
369369
else
370-
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}}" >> $GITHUB_ENV
370+
echo "BUGSPLAT_VERSION=${{env.APP_VERSION}}-qt6" >> $GITHUB_ENV
371371
fi
372372
373373
- name: Install Qt

src/3rd_party/crashpad_paths/crashpad_paths.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "crashpad_paths.h"
22

3+
#include <QStandardPaths>
4+
35
#if defined(Q_OS_WIN)
46
#define NOMINMAX
57
#include <filesystem>
@@ -105,7 +107,7 @@ QString CrashpadPaths::getReportsPath()
105107
#elif defined(Q_OS_WINDOWS)
106108
return m_exeDir + "\\crashpad";
107109
#elif defined(Q_OS_LINUX)
108-
return m_exeDir + "/crashpad";
110+
return QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/crashpad";
109111
#else
110112
#error getReportsPath not implemented on this platform
111113
#endif
@@ -118,7 +120,7 @@ QString CrashpadPaths::getMetricsPath()
118120
#elif defined(Q_OS_WINDOWS)
119121
return m_exeDir + "\\crashpad";
120122
#elif defined(Q_OS_LINUX)
121-
return m_exeDir + "/crashpad";
123+
return QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/crashpad";
122124
#else
123125
#error getMetricsPath not implemented on this platform
124126
#endif

src/core/management_layer/application_manager.cpp

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -646,7 +646,13 @@ void ApplicationManager::Implementation::sendCrashInfo()
646646
loader->setRequestMethod(NetworkRequestMethod::Post);
647647
loader->clearRequestAttributes();
648648
loader->addRequestAttribute("product", bugsplatAppName());
649-
loader->addRequestAttribute("version", QApplication::applicationVersion());
649+
QString appVersion = QApplication::applicationVersion();
650+
#if QT_VERSION_MAJOR == 5
651+
appVersion += "-qt5";
652+
#elif QT_VERSION_MAJOR == 6
653+
appVersion += "-qt6";
654+
#endif
655+
loader->addRequestAttribute("version", appVersion);
650656
loader->addRequestAttribute("qt", QString("Qt") + QT_VERSION_STR);
651657
loader->addRequestAttribute("arch", QSysInfo::currentCpuArchitecture());
652658
loader->addRequestAttribute("user", dialog->contactEmail());
@@ -1297,7 +1303,12 @@ bool ApplicationManager::Implementation::initializeCrashpad()
12971303

12981304
const QString dbName = kBugsplatDatabaseName;
12991305
const QString appName = bugsplatAppName();
1300-
const QString appVersion = QApplication::applicationVersion();
1306+
QString appVersion = QApplication::applicationVersion();
1307+
#if QT_VERSION_MAJOR == 5
1308+
appVersion += "-qt5";
1309+
#elif QT_VERSION_MAJOR == 6
1310+
appVersion += "-qt6";
1311+
#endif
13011312

13021313
const QString url = "https://" + dbName + ".bugsplat.com/post/bp/crash/crashpad.php";
13031314

@@ -1316,11 +1327,19 @@ bool ApplicationManager::Implementation::initializeCrashpad()
13161327
//
13171328
// Инициализируем базу данных crashpad
13181329
//
1330+
#if defined(Q_OS_WIN)
1331+
const QString reportsPath = QString::fromStdWString(reportsDir.value());
1332+
#else
1333+
const QString reportsPath = QString::fromStdString(reportsDir.value());
1334+
#endif
1335+
Log::info("Initializing Crashpad database at: %1", reportsPath);
13191336
std::unique_ptr<crashpad::CrashReportDatabase> database
13201337
= crashpad::CrashReportDatabase::Initialize(reportsDir);
13211338
if (database == nullptr) {
1339+
Log::error("Failed to initialize Crashpad database");
13221340
return false;
13231341
}
1342+
Log::info("Crashpad database initialized successfully");
13241343

13251344
//
13261345
// Отключаем автоматическую отправку отчетов
@@ -1342,14 +1361,21 @@ bool ApplicationManager::Implementation::initializeCrashpad()
13421361
#else
13431362
attachments.push_back(base::FilePath(logFilePath.toStdString()));
13441363
#endif
1364+
Log::info("Crashpad will attach log file: %1", logFilePath);
13451365
}
13461366

13471367
//
13481368
// Запускаем crashpad
13491369
//
13501370
crashpad::CrashpadClient* client = new crashpad::CrashpadClient();
1371+
Log::info("Starting Crashpad handler...");
13511372
bool status = client->StartHandler(handler, reportsDir, metricsDir, url.toStdString(),
13521373
annotations.toStdMap(), arguments, true, true, attachments);
1374+
if (status) {
1375+
Log::info("Crashpad handler started successfully");
1376+
} else {
1377+
Log::error("Failed to start Crashpad handler");
1378+
}
13531379
return status;
13541380
}
13551381

@@ -1870,7 +1896,7 @@ bool ApplicationManager::Implementation::openProject(const QString& _path)
18701896
return false;
18711897
}
18721898

1873-
*(volatile int *)0 = 0;
1899+
*(volatile int*)0 = 0;
18741900

18751901
if (projectsManager->project(_path) != nullptr && projectsManager->project(_path)->isLocal()
18761902
&& !QFileInfo::exists(_path)) {

0 commit comments

Comments
 (0)