Compare commits

...

3 Commits

Author SHA1 Message Date
John Preston
7aeffa242e Beta version 2.9.6.
- Debugging a video playback crash in 32 bit Windows version.
2021-08-21 09:34:26 +03:00
John Preston
3136c0586e Add some more assertions to debug a crash. 2021-08-21 09:33:20 +03:00
John Preston
fb0fcbca7f Remove redundant -static-libstdc++ for Updater. 2021-08-20 21:14:39 +03:00
9 changed files with 61 additions and 32 deletions

View File

@@ -1432,10 +1432,6 @@ if ((NOT DESKTOP_APP_DISABLE_AUTOUPDATE OR APPLE) AND NOT build_macstore AND NOT
endif()
endif()
if (LINUX)
target_link_options(Updater PRIVATE -static-libstdc++)
endif()
if (DESKTOP_APP_SPECIAL_TARGET)
add_executable(Packer)
init_target(Packer)

View File

@@ -9,7 +9,7 @@
<Identity Name="TelegramMessengerLLP.TelegramDesktop"
ProcessorArchitecture="ARCHITECTURE"
Publisher="CN=536BC709-8EE1-4478-AF22-F0F0F26FF64A"
Version="2.9.5.0" />
Version="2.9.6.0" />
<Properties>
<DisplayName>Telegram Desktop</DisplayName>
<PublisherDisplayName>Telegram Messenger LLP</PublisherDisplayName>

View File

@@ -44,8 +44,8 @@ IDI_ICON1 ICON "..\\art\\icon256.ico"
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 2,9,5,0
PRODUCTVERSION 2,9,5,0
FILEVERSION 2,9,6,0
PRODUCTVERSION 2,9,6,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -62,10 +62,10 @@ BEGIN
BEGIN
VALUE "CompanyName", "Telegram FZ-LLC"
VALUE "FileDescription", "Telegram Desktop"
VALUE "FileVersion", "2.9.5.0"
VALUE "FileVersion", "2.9.6.0"
VALUE "LegalCopyright", "Copyright (C) 2014-2021"
VALUE "ProductName", "Telegram Desktop"
VALUE "ProductVersion", "2.9.5.0"
VALUE "ProductVersion", "2.9.6.0"
END
END
BLOCK "VarFileInfo"

View File

@@ -35,8 +35,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 2,9,5,0
PRODUCTVERSION 2,9,5,0
FILEVERSION 2,9,6,0
PRODUCTVERSION 2,9,6,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -53,10 +53,10 @@ BEGIN
BEGIN
VALUE "CompanyName", "Telegram FZ-LLC"
VALUE "FileDescription", "Telegram Desktop Updater"
VALUE "FileVersion", "2.9.5.0"
VALUE "FileVersion", "2.9.6.0"
VALUE "LegalCopyright", "Copyright (C) 2014-2021"
VALUE "ProductName", "Telegram Desktop"
VALUE "ProductVersion", "2.9.5.0"
VALUE "ProductVersion", "2.9.6.0"
END
END
BLOCK "VarFileInfo"

View File

@@ -22,7 +22,7 @@ constexpr auto AppId = "{53F49750-6209-4FBF-9CA8-7A333C87D1ED}"_cs;
constexpr auto AppNameOld = "Telegram Win (Unofficial)"_cs;
constexpr auto AppName = "Telegram Desktop"_cs;
constexpr auto AppFile = "Telegram"_cs;
constexpr auto AppVersion = 2009005;
constexpr auto AppVersionStr = "2.9.5";
constexpr auto AppVersion = 2009006;
constexpr auto AppVersionStr = "2.9.6";
constexpr auto AppBetaVersion = true;
constexpr auto AppAlphaVersion = TDESKTOP_ALPHA_VERSION;

View File

@@ -140,6 +140,8 @@ private:
[[nodiscard]] TimePoint trackTime() const;
void debugAssertKnownTime(int step, crl::time time) const;
const crl::weak_on_queue<VideoTrackObject> _weak;
PlaybackOptions _options;
@@ -270,12 +272,40 @@ void VideoTrackObject::queueReadFrames(crl::time delay) {
}
}
void VideoTrackObject::debugAssertKnownTime(int step, crl::time time) const {
if (time < kTimeUnknown / 2) {
CrashReports::SetAnnotation("DebugStep", QString::number(step));
CrashReports::SetAnnotation("CheckedValue", QString::number(time));
CrashReports::SetAnnotation(
"_syncTimePoint.trackTime",
QString::number(_syncTimePoint.trackTime));
CrashReports::SetAnnotation(
"_syncTimePoint.worldTime",
QString::number(_syncTimePoint.worldTime));
CrashReports::SetAnnotation(
"_pausedTime",
QString::number(_pausedTime));
CrashReports::SetAnnotation(
"_resumedTime",
QString::number(_resumedTime));
if (!_shared) {
CrashReports::SetAnnotation("_shared", "NULL");
} else {
CrashReports::SetAnnotation(
"_shared->initialized",
_shared->initialized() ? "true" : "false");
}
CrashReports::SetAnnotation("Now", QString::number(crl::now()));
Unexpected("Bad time value.");
}
}
void VideoTrackObject::readFrames() {
if (interrupted()) {
return;
}
auto time = trackTime().trackTime;
Assert(1 && time >= kTimeUnknown / 2); // Debugging a crash.
debugAssertKnownTime(1, time);
while (true) {
const auto result = readEnoughFrames(time);
v::match(result, [&](FrameResult result) {
@@ -286,7 +316,7 @@ void VideoTrackObject::readFrames() {
const auto duration = computeDuration();
Assert(duration != kDurationUnavailable);
time -= duration;
Assert(2 && time >= kTimeUnknown / 2); // Debugging a crash.
debugAssertKnownTime(2, time);
}
}, [&](Shared::PrepareNextCheck delay) {
Expects(delay == kTimeUnknown || delay > 0);
@@ -533,8 +563,7 @@ void VideoTrackObject::setSpeed(float64 speed) {
}
if (_syncTimePoint.valid()) {
_syncTimePoint = trackTime();
// Debugging a crash.
Assert(3 && _syncTimePoint.trackTime >= kTimeUnknown / 2);
debugAssertKnownTime(3, _syncTimePoint.trackTime);
}
_options.speed = speed;
}
@@ -622,8 +651,7 @@ bool VideoTrackObject::processFirstFrame() {
if (frame.isNull()) {
return false;
}
// Debugging a crash.
Assert(4 && _syncTimePoint.trackTime >= kTimeUnknown / 2);
debugAssertKnownTime(4, _syncTimePoint.trackTime);
_shared->init(std::move(frame), _syncTimePoint.trackTime);
callReady();
queueReadFrames();
@@ -647,8 +675,7 @@ bool VideoTrackObject::fillStateFromFrame() {
return false;
}
_syncTimePoint.trackTime = position;
// Debugging a crash.
Assert(5 && _syncTimePoint.trackTime >= kTimeUnknown / 2);
debugAssertKnownTime(5, _syncTimePoint.trackTime);
return true;
}
@@ -675,8 +702,7 @@ void VideoTrackObject::callReady() {
}
TimePoint VideoTrackObject::trackTime() const {
// Debugging a crash.
Assert(7 && _syncTimePoint.trackTime >= kTimeUnknown / 2);
debugAssertKnownTime(7, _syncTimePoint.trackTime);
auto result = TimePoint();
result.worldTime = (_pausedTime != kTimeUnknown)
@@ -686,6 +712,8 @@ TimePoint VideoTrackObject::trackTime() const {
result.trackTime = _syncTimePoint.trackTime;
return result;
}
debugAssertKnownTime(8, _syncTimePoint.worldTime);
debugAssertKnownTime(9, result.worldTime);
Assert(_resumedTime != kTimeUnknown);
if (_options.syncVideoByAudio && _audioId.externalPlayId()) {
@@ -693,13 +721,14 @@ TimePoint VideoTrackObject::trackTime() const {
const auto point = mixer->getExternalSyncTimePoint(_audioId);
if (point && point.worldTime > _resumedTime) {
_syncTimePoint = point;
// Debugging a crash.
Assert(6 && _syncTimePoint.trackTime >= kTimeUnknown / 2);
debugAssertKnownTime(6, _syncTimePoint.trackTime);
debugAssertKnownTime(10, _syncTimePoint.worldTime);
}
}
const auto adjust = (result.worldTime - _syncTimePoint.worldTime);
result.trackTime = _syncTimePoint.trackTime
+ crl::time(std::round(adjust * _options.speed));
debugAssertKnownTime(11, result.trackTime);
return result;
}

View File

@@ -1,7 +1,7 @@
AppVersion 2009005
AppVersion 2009006
AppVersionStrMajor 2.9
AppVersionStrSmall 2.9.5
AppVersionStr 2.9.5
AppVersionStrSmall 2.9.6
AppVersionStr 2.9.6
BetaChannel 1
AlphaVersion 0
AppVersionOriginal 2.9.5.beta
AppVersionOriginal 2.9.6.beta

View File

@@ -1,3 +1,7 @@
2.9.6 beta (21.08.21)
- Debugging a video playback crash in 32 bit Windows version.
2.9.5 beta (20.08.21)
- Tile chat background patterns horizontally.