telegramdesktop / tdesktop

Telegram Desktop messaging app
https://desktop.telegram.org/
Other
26.05k stars 5.17k forks source link

Long startup on Linux+KDE+X11 #27715

Closed isage closed 6 months ago

isage commented 6 months ago

Steps to reproduce

  1. Fedora 39 KDE + X11
  2. Install telegram from flatpak or snap
  3. run

Expected behaviour

Telegram starts, tray icon is shown

Actual behaviour

Telegram takes like a minute to start. No tray icon
Tray icon appears after another few minutes or when someone sends you a message

Operating system

Fedora Linux KDE

Version of Telegram Desktop

4.16.2

Installation source

Flatpak

Crash ID

No response

Logs

Console log

QPainter::begin: Paint device returned engine == 0, type: 2
QWidget::render: Cannot render with an inactive painter

relevant journalctl logs

апр 07 10:33:42 seven-swords xdg-desktop-por[2172]: A backend call failed: No such method 'CreateMonitor' in interface 'org.freedesktop.impl.portal.Inhibit' at object path '/org/freedesktop/portal/desktop' (signature 'ooss')
апр 07 10:33:42 seven-swords xdg-desktop-por[2172]: Failed to close session implementation: GDBus.Error:org.freedesktop.DBus.Error.UnknownObject: No such object path '/org/freedesktop/portal/desktop/session/1_199/tdesktop2751024667'

This also happens with 4.15.2 from distro repo. log.txt from that version

[2024.04.07 10:36:31] Launched version: 4015002, install beta: [TRUE], alpha: 0, debug mode: [FALSE]
[2024.04.07 10:36:31] Executable dir: /usr/bin/, name: telegram-desktop
[2024.04.07 10:36:31] Initial working dir: /home/isage/
[2024.04.07 10:36:31] Working dir: /home/isage/.TelegramDesktop/
[2024.04.07 10:36:31] Command line: telegram-desktop
[2024.04.07 10:36:31] Executable path before check: /usr/bin/telegram-desktop
[2024.04.07 10:36:31] Logs started
[2024.04.07 10:36:31] App ID: org.telegram.desktop
[2024.04.07 10:36:31] Connecting local socket to 32ab650a948c702f4454faf84d34b194-TelegramDesktop...
[2024.04.07 10:36:31] Socket connect error 0, starting server and app...
[2024.04.07 10:36:31] Moved logging from '/home/isage/.TelegramDesktop/log_start0.txt' to '/home/isage/.TelegramDesktop/log.txt'!
[2024.04.07 10:36:31] Global devicePixelRatio: 1
[2024.04.07 10:36:31] QT_AUTO_SCREEN_SCALE_FACTOR: 0
[2024.04.07 10:36:31] Primary screen DPI: 96, Base: 96.
[2024.04.07 10:36:31] Computed screen scale: 100
[2024.04.07 10:36:31] DevicePixelRatio: 1
[2024.04.07 10:36:31] ScreenScale: 100
[2024.04.07 10:36:31] Icon theme: breeze-dark
[2024.04.07 10:36:31] Fallback icon theme: breeze
[2024.04.07 10:36:31] Media Info: Type Playback, default: Family 17h (Models 00h-0fh) HD Audio Controller Analog Stereo, list: { "Family 17h (Models 00h-0fh) HD Audio Controller Analog Stereo" <Family 17h (Models 00h-0fh) HD Audio Controller Analog Stereo>, "GP104 High Definition Audio Controller Digital Stereo (HDMI)" <GP104 High Definition Audio Controller Digital Stereo (HDMI)> }, full list refresh: true
[2024.04.07 10:36:31] Media Info: Type Capture, default: Family 17h (Models 00h-0fh) HD Audio Controller Analog Stereo, list: { "Family 17h (Models 00h-0fh) HD Audio Controller Analog Stereo" <Family 17h (Models 00h-0fh) HD Audio Controller Analog Stereo>, "Monitor of Family 17h (Models 00h-0fh) HD Audio Controller Analog Stereo" <Monitor of Family 17h (Models 00h-0fh) HD Audio Controller Analog Stereo>, "Monitor of GP104 High Definition Audio Controller Digital Stereo (HDMI)" <Monitor of GP104 High Definition Audio Controller Digital Stereo (HDMI)> }, full list refresh: true
[2024.04.07 10:36:31] Media Error: Can't sync default device for type Camera, default: , list: {  }
[2024.04.07 10:36:31] System tray available: [TRUE]
[2024.04.07 10:36:31] Font: from ':/gui/fonts/DAOpenSansRegular.ttf' loaded 'DAOpenSansRegular'
[2024.04.07 10:36:31] Font: from ':/gui/fonts/DAVazirRegular.ttf' loaded 'DAVazirRegular'
[2024.04.07 10:36:31] Font: from ':/gui/fonts/DAOpenSansRegularItalic.ttf' loaded 'DAOpenSansRegularItalic'
[2024.04.07 10:36:31] Font: from ':/gui/fonts/DAVazirRegular.ttf' loaded 'DAVazirRegular'
[2024.04.07 10:36:31] Font: from ':/gui/fonts/DAOpenSansSemiboldAsBold.ttf' loaded 'DAOpenSansSemibold'
[2024.04.07 10:36:31] Font: from ':/gui/fonts/DAVazirMediumAsBold.ttf' loaded 'DAVazirMedium'
[2024.04.07 10:36:31] Font: from ':/gui/fonts/DAOpenSansSemiboldItalicAsBold.ttf' loaded 'DAOpenSansSemiboldItalic'
[2024.04.07 10:36:31] Font: from ':/gui/fonts/DAVazirMediumAsBold.ttf' loaded 'DAVazirMedium'
[2024.04.07 10:36:31] Font: from ':/gui/fonts/DAOpenSansSemiboldAsBold.ttf' loaded 'DAOpenSansSemibold'
[2024.04.07 10:36:31] Font: from ':/gui/fonts/DAVazirMediumAsBold.ttf' loaded 'DAVazirMedium'
[2024.04.07 10:36:31] Font: from ':/gui/fonts/DAOpenSansSemiboldItalicAsBold.ttf' loaded 'DAOpenSansSemiboldItalic'
[2024.04.07 10:36:31] Font: from ':/gui/fonts/DAVazirMediumAsBold.ttf' loaded 'DAVazirMedium'
[2024.04.07 10:36:31] App Info: reading settings...
[2024.04.07 10:36:31] App Info: reading encrypted settings...
[2024.04.07 10:36:31] Lang Info: Loaded cached, keys: 6794
[2024.04.07 10:36:31] OpenAL Logging Level: (not set)
[2024.04.07 10:36:31] App Info: reading accounts info...
[2024.04.07 10:36:31] App Info: reading encrypted info...
[2024.04.07 10:36:31] App Info: reading map...
[2024.04.07 10:36:31] App Info: reading encrypted map...
[2024.04.07 10:36:31] App Info: reading encrypted user settings...
[2024.04.07 10:36:31] App Info: encrypted user settings read.
[2024.04.07 10:36:31] App Info: reading encrypted mtp data...
[2024.04.07 10:36:31] Map read time: 13
[2024.04.07 10:36:31] App Info: reading encrypted mtp config...
[2024.04.07 10:36:31] Export Info: Destroy top bar by controller removal.
[2024.04.07 10:37:19] OpenGL Profile: Compatibility.
[2024.04.07 10:37:19] OpenGL Renderer: NVIDIA GeForce GTX 1080/PCIe/SSE2
[2024.04.07 10:37:19] OpenGL Vendor: NVIDIA Corporation
[2024.04.07 10:37:19] OpenGL Version: 4.6.0 NVIDIA 550.67
[2024.04.07 10:37:19] OpenGL Extensions: GL_NV_gpu_shader5, GL_ARB_texture_float, GL_NV_explicit_multisample, GL_ARB_draw_instanced, GL_NV_blend_minmax_factor, GL_SGIX_depth_texture, GL_NV_fragment_coverage_to_color, GL_ARB_sampler_objects, GL_KTX_buffer_region, GL_AMD_multi_draw_indirect, GL_ARB_explicit_attrib_location, GL_ARB_provoking_vertex, GL_EXT_texture_compression_latc, GL_NV_vertex_program2, GL_NV_fragment_shader_interlock, GL_EXT_rescale_normal, GL_ARB_texture_non_power_of_two, GL_ARB_texture_compression, GL_ARB_get_texture_sub_image, GL_EXT_abgr, GL_ARB_clear_texture, GL_ARB_texture_buffer_object_rgb32, GL_ARB_polygon_offset_clamp, GL_ATI_draw_buffers, GL_EXT_texture_compression_s3tc, GL_ARB_texture_barrier, GL_ARB_robust_buffer_access_behavior, GL_ARB_texture_border_clamp, GL_ARB_compute_variable_group_size, GL_ARB_shader_precision, GL_NV_half_float, GL_ARB_texture_cube_map_array, GL_EXT_texture_storage, GL_NV_uniform_buffer_unified_memory, GL_EXT_raster_multisample, GL_NV_vertex_program2_option, GL_ARB_seamless_cube_map, GL_ARB_shading_language_packing, GL_NV_vertex_program3, GL_ARB_gl_spirv, GL_ARB_transform_feedback3, GL_NV_conservative_raster, GL_ARB_compute_shader, GL_ARB_indirect_parameters, GL_EXT_blend_equation_separate, GL_ARB_sparse_texture_clamp, GL_ARB_texture_mirrored_repeat, GL_EXT_semaphore_fd, GL_KHR_robust_buffer_access_behavior, GL_KHR_no_error, GL_ARB_vertex_type_10f_11f_11f_rev, GL_EXT_packed_pixels, GL_NV_transform_feedback2, GL_NV_vertex_array_range, GL_EXT_texture_shadow_lod, GL_ARB_explicit_uniform_location, GL_NV_texture_shader2, GL_ARB_shader_objects, GL_EXT_blend_minmax, GL_EXT_texture_compression_rgtc, GL_ARB_ES3_1_compatibility, GL_ARB_stencil_texturing, GL_ARB_texture_stencil8, GL_EXT_texture_shared_exponent, GL_NV_shader_buffer_load, GL_OVR_multiview, GL_EXT_texture_cube_map, GL_ARB_uniform_buffer_object, GL_NV_bindless_multi_draw_indirect, GL_ARB_timer_query, GL_ARB_texture_rectangle, GL_EXT_shader_image_load_formatted, GL_ARB_depth_buffer_float, GL_EXT_stencil_wrap, GL_NV_multisample_filter_hint, GL_EXT_compiled_vertex_array, GL_NV_internalformat_sample_query, GL_NV_shader_subgroup_partitioned, GL_ARB_tessellation_shader, GL_ARB_cull_distance, GL_ATI_texture_mirror_once, GL_EXT_packed_float, GL_NV_geometry_shader4, GL_NV_path_rendering_shared_edge, GL_ARB_texture_rg, GL_ARB_shader_storage_buffer_object, GL_NV_vertex_program, GL_ARB_shader_image_load_store, GL_EXT_packed_depth_stencil, GL_ATI_texture_float, GL_ARB_conservative_depth, GL_EXT_memory_object, GL_ARB_depth_texture, GL_NV_uniform_buffer_std430_layout, GL_ARB_ES2_compatibility, GL_NV_texture_barrier, GL_ARB_viewport_array, GL_S3_s3tc, GL_ARB_vertex_program, GL_EXT_texture_sRGB_decode, GL_NV_texture_rectangle_compressed, GL_ARB_shading_language_include, GL_ARB_texture_filter_anisotropic, GL_EXT_window_rectangles, GL_EXT_blend_subtract, GL_ARB_gpu_shader_fp64, GL_NV_light_max_exponent, GL_NV_primitive_restart, GL_NVX_gpu_memory_info, GL_NV_robustness_video_memory_purge, GL_EXT_texture_integer, GL_ARB_transform_feedback_instanced, GL_EXT_transform_feedback2, GL_ARB_blend_func_extended, GL_ARB_multi_draw_indirect, GL_ARB_vertex_attrib_binding, GL_NV_texture_multisample, GL_ARB_texture_swizzle, GL_EXT_multi_draw_arrays, GL_EXT_shader_integer_mix, GL_NV_query_resource, GL_NV_memory_attachment, GL_EXT_direct_state_access, GL_SGIS_generate_mipmap, GL_EXT_texture_object, GL_EXT_draw_instanced, GL_ARB_texture_gather, GL_NV_path_rendering, GL_ARB_transform_feedback2, GL_EXT_bgra, GL_EXT_framebuffer_blit, GL_EXT_fog_coord, GL_NV_fragment_program2, GL_NV_compute_program5, GL_ARB_fragment_shader_interlock, GL_ARB_separate_shader_objects, GL_NV_transform_feedback, GL_ARB_pipeline_statistics_query, GL_AMD_vertex_shader_viewport_index, GL_EXTX_framebuffer_mixed_formats, GL_ARB_texture_query_levels, GL_ARB_window_pos, GL_EXT_texture_edge_clamp, GL_NV_shader_atomic_float, GL_ARB_robustness, GL_NV_register_combiners, GL_EXT_draw_buffers2, GL_EXT_secondary_color, GL_NV_fragment_program, GL_NV_texture_shader, GL_NV_vertex_array_range2, GL_EXT_texture3D, GL_ARB_texture_rgb10_a2ui, GL_ARB_copy_image, GL_AMD_vertex_shader_layer, GL_ARB_gpu_shader5, GL_EXT_framebuffer_multisample_blit_scaled, GL_ARB_fragment_program, GL_ARB_multisample, GL_NV_shader_atomic_int64, GL_ARB_imaging, GL_SUN_slice_accum, GL_ARB_sparse_texture2, GL_ARB_draw_buffers_blend, GL_EXT_shader_image_load_store, GL_ARB_vertex_shader, GL_NV_command_list, GL_NV_conditional_render, GL_NV_shader_thread_shuffle, GL_ARB_compatibility, GL_NVX_blend_equation_advanced_multi_draw_buffers, GL_ARB_draw_indirect, GL_ARB_vertex_array_bgra, GL_ARB_multitexture, GL_ARB_instanced_arrays, GL_ARB_get_program_binary, GL_EXT_semaphore, GL_ARB_texture_query_lod, GL_NV_texture_shader3, GL_EXT_gpu_shader4, GL_EXT_post_depth_coverage, GL_NV_draw_texture, GL_ARB_sample_shading, GL_NVX_progress_fence, GL_EXT_framebuffer_multisample, GL_NV_vertex_program1_1, GL_EXT_vertex_attrib_64bit, GL_NV_blend_equation_advanced_coherent, GL_ARB_sample_locations, GL_ARB_texture_buffer_range, GL_SGIX_shadow, GL_EXT_gpu_program_parameters, GL_KHR_blend_equation_advanced, GL_ARB_transpose_matrix, GL_NV_conservative_raster_pre_snap_triangles, GL_ARB_texture_cube_map, GL_EXT_separate_shader_objects, GL_ARB_texture_env_dot3, GL_ARB_geometry_shader4, GL_NV_ES1_1_compatibility, GL_ARB_shader_subroutine, GL_ARB_map_buffer_alignment, GL_EXT_draw_range_elements, GL_NV_texgen_reflection, GL_NV_texture_env_combine4, GL_ARB_multi_bind, GL_ARB_texture_compression_rgtc, GL_KHR_shader_subgroup, GL_EXT_geometry_shader4, GL_NV_bindless_texture, GL_NV_gpu_program5, GL_ARB_shader_draw_parameters, GL_EXT_polygon_offset_clamp, GL_ARB_fragment_coord_conventions, GL_OVR_multiview2, GL_EXT_texture_lod, GL_ARB_shader_texture_lod, GL_IBM_texture_mirrored_repeat, GL_NV_parameter_buffer_object, GL_NV_draw_vulkan_image, GL_NV_gpu_program5_mem_extended, GL_NV_sample_locations, GL_NV_blend_equation_advanced, GL_ARB_ES3_compatibility, GL_ARB_copy_buffer, GL_NV_packed_depth_stencil, GL_ARB_pixel_buffer_object, GL_NV_memory_object_sparse, GL_ARB_shader_clock, GL_ARB_texture_view, GL_ARB_texture_compression_bptc, GL_ARB_half_float_vertex, GL_KHR_context_flush_control, GL_NV_shader_storage_buffer_object, GL_NV_fence, GL_NV_shader_thread_group, GL_ARB_fragment_layer_viewport, GL_ARB_shading_language_100, GL_ARB_texture_env_combine, GL_NV_vdpau_interop, GL_ARB_sparse_texture, GL_ARB_conditional_render_inverted, GL_ARB_clear_buffer_object, GL_ARB_shader_viewport_layer_array, GL_ARB_vertex_buffer_object, GL_KHR_robustness, GL_EXT_texture_swizzle, GL_EXT_Cg_shader, GL_NV_fill_rectangle, GL_NV_depth_clamp, GL_NV_query_resource_tag, GL_ARB_texture_env_crossbar, GL_ARB_ES3_2_compatibility, GL_ARB_shader_group_vote, GL_EXT_texture_mirror_clamp, GL_ARB_transform_feedback_overflow_query, GL_EXT_multiview_texture_multisample, GL_EXT_provoking_vertex, GL_ARB_vertex_array_object, GL_NV_gpu_program4, GL_EXT_memory_object_fd, GL_NV_vertex_attrib_integer_64bit, GL_ARB_texture_multisample, GL_NV_blend_square, GL_ARB_arrays_of_arrays, GL_ARB_point_parameters, GL_NV_gpu_multicast, GL_NV_framebuffer_mixed_samples, GL_ARB_internalformat_query2, GL_ARB_spirv_extensions, GL_ARB_color_buffer_float, GL_ARB_draw_buffers, GL_NV_framebuffer_multisample_coverage, GL_ARB_vertex_type_2_10_10_10_rev, GL_EXT_texture_lod_bias, GL_ARB_texture_storage_multisample, GL_NV_vertex_buffer_unified_memory, GL_ARB_shader_atomic_counters, GL_ARB_occlusion_query, GL_ARB_enhanced_layouts, GL_ARB_half_float_pixel, GL_NV_sample_mask_override_coverage, GL_NV_ES3_1_compatibility, GL_EXT_blend_func_separate, GL_ARB_seamless_cubemap_per_texture, GL_NV_alpha_to_coverage_dither_control, GL_NV_timeline_semaphore, GL_EXT_blend_color, GL_NVX_nvenc_interop, GL_ARB_framebuffer_no_attachments, GL_ARB_depth_clamp, GL_EXT_pixel_buffer_object, GL_NV_viewport_swizzle, GL_KHR_blend_equation_advanced_coherent, GL_EXT_texture_env_add, GL_NV_gpu_program4_1, GL_ARB_framebuffer_sRGB, GL_ARB_texture_buffer_object, GL_ARB_invalidate_subdata, GL_EXT_shadow_funcs, GL_NV_register_combiners2, GL_IBM_rasterpos_clip, GL_NV_shader_atomic_counters, GL_ARB_gpu_shader_int64, GL_EXT_separate_specular_color, GL_ARB_sparse_buffer, GL_NV_vdpau_interop2, GL_EXT_sparse_texture2, GL_ARB_shading_language_420pack, GL_NV_viewport_array2, GL_ARB_debug_output, GL_ARB_parallel_shader_compile, GL_ARB_clip_control, GL_NV_copy_image, GL_NV_stereo_view_rendering, GL_EXT_depth_bounds_test, GL_KHR_parallel_shader_compile, GL_ARB_shadow, GL_ARB_texture_filter_minmax, GL_EXT_texture_buffer_object, GL_EXT_texture_sRGB, GL_ARB_shader_image_size, GL_ARB_program_interface_query, GL_ARB_framebuffer_object, GL_ARB_bindless_texture, GL_ARB_shader_ballot, GL_NV_parameter_buffer_object2, GL_ARB_texture_env_add, GL_EXT_texture_sRGB_R8, GL_ARB_derivative_control, GL_NV_bindless_multi_draw_indirect_count, GL_ARB_query_buffer_object, GL_EXT_bindable_uniform, GL_EXT_texture_filter_minmax, GL_NV_clip_space_w_scaling, GL_ARB_direct_state_access, GL_NV_feature_query, GL_AMD_seamless_cubemap_per_texture, GL_ARB_texture_mirror_clamp_to_edge, GL_EXT_texture_filter_anisotropic, GL_KHR_debug, GL_NV_depth_buffer_float, GL_EXT_point_parameters, GL_NV_fog_distance, GL_ARB_post_depth_coverage, GL_NV_conservative_raster_dilate, GL_NV_shader_atomic_float64, GL_NV_multisample_coverage, GL_NV_copy_depth_to_color, GL_EXT_framebuffer_object, GL_ARB_occlusion_query2, GL_EXT_vertex_array_bgra, GL_NV_fragment_program_option, GL_ARB_shader_atomic_counter_ops, GL_SGIS_texture_lod, GL_ARB_shader_bit_encoding, GL_NV_pixel_data_range, GL_EXT_texture_env_dot3, GL_EXT_framebuffer_sRGB, GL_NV_texture_compression_vtc, GL_NVX_conditional_render, GL_NV_texture_rectangle, GL_EXT_import_sync_object, GL_ARB_compressed_texture_pixel_storage, GL_EXT_texture_env_combine, GL_EXT_texture_array, GL_EXT_vertex_array, GL_ARB_draw_elements_base_vertex, GL_NV_point_sprite, GL_NV_gpu_program_fp64, GL_ARB_fragment_shader, GL_NV_occlusion_query, GL_NV_shader_atomic_fp16_vector, GL_ARB_shader_texture_image_samples, GL_ARB_buffer_storage, GL_EXT_stencil_two_side, GL_EXT_multiview_timer_query, GL_ARB_map_buffer_range, GL_ARB_internalformat_query, GL_ARB_base_instance, GL_ARB_fragment_program_shadow, GL_EXT_texture_compression_dxt1, GL_ARB_texture_storage, GL_ARB_sync, GL_NV_geometry_shader_passthrough, GL_ARB_vertex_attrib_64bit, GL_ARB_point_sprite, GL_EXT_timer_query, GL_EXT_x11_sync_object, GL_NV_float_buffer
[2024.04.07 10:37:19] OpenGL: Disable on NVIDIA driver on Linux.
[2024.04.07 10:37:19] OpenGL: [FALSE] (Window)
isage commented 6 months ago

Telegram 4.16.2 from static binary seems to start faster and does have tray icon.

ilya-fedin commented 6 months ago

nvidia driver is known to have long start, nothing could be done about that as it's proprietary. Switch to nouveau or disable OpenGL.

isage commented 6 months ago

Why does statically built version works fine then?

ilya-fedin commented 6 months ago

i don't know :(. There were reports static binary hangs with nvidia just as well.

isage commented 6 months ago

Welp, just great. It worked just fine with 4.8.4

ilya-fedin commented 6 months ago

Yeah, fixes for one kind of things break other things... Linux moment.

isage commented 6 months ago

Also works fine under wayland KDE session (no tray icon, though).

isage commented 6 months ago

Switch to nouveau

Thanks, but no, thanks. Already have one burned gpu by nouveau.

or disable OpenGL

How would i go about disabling opengl for telegram?

ilya-fedin commented 6 months ago

How would i go about disabling opengl for telegram?

The switch is straight in advanced settings...

isage commented 6 months ago

Yeah, that helped. Thanks.

isage commented 6 months ago

So i dug a little deeper. It hangs in lib_ui/ui/gl/gl_detection.cpp on new QOpenGLWidget() (this also explains why it hangs on nvidia, despite gl being force-disabled there anyway. disabling from settings just skips the check altogether) However, i did minimal test-case with code from gl_detection, and it doesn't hang.


#include <QApplication>
#include <QSurfaceFormat>
#include <QtOpenGLWidgets/QOpenGLWidget>
#include <QOpenGLContext>
#include <QOpenGLFunctions>

int main(int argc, char *argv[])
{
/*
    auto format = QSurfaceFormat::defaultFormat();
    format.setSwapInterval(0);
    format.setAlphaBufferSize(8);
    QSurfaceFormat::setDefaultFormat(format);
     qWarning("Set def format");
*/
    QApplication a(argc, argv);

    auto format = QSurfaceFormat();

    const auto tester = [&] {
        std::unique_ptr<QObject> result;

            const auto w = new QOpenGLWidget(nullptr);
            qWarning(("OpenGL: new QOpenGLWidget(widget);"));
            w->setFormat(format);
            w->grabFramebuffer(); // Force initialize().
            qWarning(("OpenGL: Force initialize()"));
            if (!w->window()->windowHandle()) {
                w->window()->createWinId();
            }
            qWarning(("OpenGL: Force makeCurrent()."));
            result.reset(w);
            qWarning(("OpenGL: reset(w)"));

        return result;
    }();

    qWarning(("OpenGL: testerWidget"));
    const auto testerWidget = static_cast<QOpenGLWidget*>(tester.get());

    const auto context = testerWidget->context();
    qWarning(("OpenGL: got context"));
    if (!context
        || !context->isValid()/*
                // This check doesn't work for a widget with WA_NativeWindow.
                || !context->makeCurrent(testerQWindow)*/) {
        qWarning(("OpenGL: Could not create widget in a window."));
        return {};
    }
    const auto functions = context->functions();
    qWarning(("OpenGL: got functions"));
    using Feature = QOpenGLFunctions;
    if (!functions->hasOpenGLFeature(Feature::NPOTTextures)) {
        qWarning(("OpenGL: NPOT textures not supported."));
        return {};
    } else if (!functions->hasOpenGLFeature(Feature::Framebuffers)) {
        qWarning(("OpenGL: Framebuffers not supported."));
        return {};
    } else if (!functions->hasOpenGLFeature(Feature::Shaders)) {
        qWarning(("OpenGL: Shaders not supported."));
        return {};
    }
    qWarning(("OpenGL: checked functions"));

    const auto supported = context->format();
    qWarning(("OpenGL: got format"));
    switch (supported.profile()) {
    case QSurfaceFormat::NoProfile: {
        if (supported.renderableType() == QSurfaceFormat::OpenGLES) {
            qWarning(("OpenGL Profile: OpenGLES."));
        } else {
            qWarning(("OpenGL Profile: NoProfile."));
        }
    } break;
    case QSurfaceFormat::CoreProfile: {
        qWarning(("OpenGL Profile: Core."));
    } break;
    case QSurfaceFormat::CompatibilityProfile: {
        qWarning(("OpenGL Profile: Compatibility."));
    } break;
    }

    return a.exec();
}
ilya-fedin commented 6 months ago

Yeah, it hangs in combination with scudo allocator from LLVM project. Removing the scudo allocator leads to memory never being released to the system when scrolling media in chats.

isage commented 6 months ago

Okay, so it's a duplicate of https://github.com/telegramdesktop/tdesktop/issues/27618 (sorry, my google-fu failed to find that one initially)