telegramdesktop / tdesktop

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

Mini apps blank on Linux with webkit crash on Wayland #28448

Closed iodream closed 1 month ago

iodream commented 1 month ago

Steps to reproduce

Open a mini app such as @findminiappbot (https://t.me/findminiappbot)

Expected behaviour

Window opens and functions

Actual behaviour

Window is blank forever with a spinning circle underneath. In background, WebKitWebProcess crashes.

Operating system

Arch linux, Kde Plasma 6.1.5 Wayland

Version of Telegram Desktop

5.5.5

Installation source

Static binary from official website

Crash ID

No response

Logs

[2024.09.23 18:10:12] Launched version: 5005005, install beta: [FALSE], alpha: 0, debug mode: [FALSE]
[2024.09.23 18:10:12] Executable dir: /home/iod/Downloads/Telegram/, name: Telegram
[2024.09.23 18:10:12] Initial working dir: /home/iod/
[2024.09.23 18:10:12] Working dir: /home/iod/.local/share/TelegramDesktop/
[2024.09.23 18:10:12] Command line: /home/iod/Downloads/Telegram/Telegram
[2024.09.23 18:10:12] Executable path before check: /home/iod/Downloads/Telegram/Telegram
[2024.09.23 18:10:12] Logs started
[2024.09.23 18:10:12] App ID: org.telegram.desktop._9c080125cc843ca8f7ccd2e7782f6b04
[2024.09.23 18:10:12] Connecting local socket to d980e0515050bbaadf14119eedd0c424-TelegramDesktop...
[2024.09.23 18:10:12] Socket connect error 0, starting server and app...
[2024.09.23 18:10:12] Moved logging from '/home/iod/.local/share/TelegramDesktop/log_start0.txt' to '/home/iod/.local/share/TelegramDesktop/log.txt'!
[2024.09.23 18:10:12] Opened '/home/iod/.local/share/TelegramDesktop/tdata/working' for reading, the previous Telegram Desktop launch was not finished properly :( Crash log size: 0
[2024.09.23 18:10:12] Global devicePixelRatio: 1
[2024.09.23 18:10:12] QT_AUTO_SCREEN_SCALE_FACTOR: 0
[2024.09.23 18:10:12] Primary screen DPI: 120, Base: 96.
[2024.09.23 18:10:12] Computed screen scale: 125
[2024.09.23 18:10:12] DevicePixelRatio: 1
[2024.09.23 18:10:12] ScreenScale: 125
[2024.09.23 18:10:12] Icon theme: breeze-dark
[2024.09.23 18:10:12] Fallback icon theme: 
[2024.09.23 18:10:12] Media Info: Type Playback, default: Family 17h/19h HD Audio Controller Analog Stereo, list: { "Family 17h/19h HD Audio Controller Analog Stereo" <Family 17h/19h HD Audio Controller Analog Stereo> }, full list refresh: true
[2024.09.23 18:10:12] Media Info: Type Capture, default: Family 17h/19h HD Audio Controller Analog Stereo, list: { "Family 17h/19h HD Audio Controller Analog Stereo" <Family 17h/19h HD Audio Controller Analog Stereo>, "Monitor of Family 17h/19h HD Audio Controller Analog Stereo" <Monitor of Family 17h/19h HD Audio Controller Analog Stereo> }, full list refresh: true
[2024.09.23 18:10:12] Media Info: Type Camera, default: usb-0000:35:00.3-4, list: { "USB2.0 HD UVC WebCam: USB2.0 HD" <usb-0000:35:00.3-4> }, full list refresh: true
[2024.09.23 18:10:12] App Info: reading settings...
[2024.09.23 18:10:12] App Info: reading encrypted settings...
[2024.09.23 18:10:12] Lang Info: Loaded cached, keys: 7397
[2024.09.23 18:10:12] Font: from ':/gui/fonts/OpenSans-Regular.ttf' loaded 'Open Sans'
[2024.09.23 18:10:12] Font: from ':/gui/fonts/OpenSans-Italic.ttf' loaded 'Open Sans'
[2024.09.23 18:10:12] Font: from ':/gui/fonts/OpenSans-SemiBold.ttf' loaded 'Open Sans'
[2024.09.23 18:10:12] Font: from ':/gui/fonts/OpenSans-SemiBold.ttf' loaded 'Open Sans Semibold'
[2024.09.23 18:10:12] Font: from ':/gui/fonts/OpenSans-SemiBoldItalic.ttf' loaded 'Open Sans'
[2024.09.23 18:10:12] Font: from ':/gui/fonts/OpenSans-SemiBoldItalic.ttf' loaded 'Open Sans Semibold'
[2024.09.23 18:10:12] Font: from ':/gui/fonts/Vazirmatn-UI-NL-Regular.ttf' loaded 'Vazirmatn UI NL'
[2024.09.23 18:10:12] Font: from ':/gui/fonts/Vazirmatn-UI-NL-SemiBold.ttf' loaded 'Vazirmatn UI NL'
[2024.09.23 18:10:12] Font: from ':/gui/fonts/Vazirmatn-UI-NL-SemiBold.ttf' loaded 'Vazirmatn UI NL SemiBold'
[2024.09.23 18:10:12] OpenAL Logging Level: (not set)
[2024.09.23 18:10:12] App Info: reading accounts info...
[2024.09.23 18:10:12] App Info: reading encrypted info...
[2024.09.23 18:10:12] App Info: reading map...
[2024.09.23 18:10:12] App Info: reading encrypted map...
[2024.09.23 18:10:12] App Info: reading encrypted user settings...
[2024.09.23 18:10:12] App Info: encrypted user settings read.
[2024.09.23 18:10:12] App Info: reading encrypted mtp data...
[2024.09.23 18:10:12] MTP Info: read keys, current: 4, to destroy: 0
[2024.09.23 18:10:12] Map read time: 1
[2024.09.23 18:10:12] App Info: reading encrypted mtp config...
[2024.09.23 18:10:12] Export Info: Destroy top bar by controller removal.
[2024.09.23 18:10:12] System tray available: [TRUE]
[2024.09.23 18:10:12] OpenGL Profile: Compatibility.
[2024.09.23 18:10:12] OpenGL Renderer: AMD Radeon 660M (radeonsi, rembrandt, LLVM 18.1.8, DRM 3.58, 6.11.0-arch1-1)
[2024.09.23 18:10:12] OpenGL Vendor: AMD
[2024.09.23 18:10:12] OpenGL Version: 4.6 (Compatibility Profile) Mesa 24.2.3-arch1.1
[2024.09.23 18:10:12] OpenGL Extensions: GL_ARB_fragment_shader, GL_MESA_pack_invert, GL_ANGLE_texture_compression_dxt5, GL_ARB_texture_env_add, GL_AMD_shader_stencil_export, GL_ARB_texture_border_clamp, GL_EXT_demote_to_helper_invocation, GL_ARB_point_parameters, GL_EXT_framebuffer_sRGB, GL_EXT_EGL_image_storage, GL_ATI_draw_buffers, GL_ARB_clear_buffer_object, GL_ARB_shader_stencil_export, GL_EXT_stencil_two_side, GL_ARB_shader_subroutine, GL_EXT_texture_sRGB_RG8, GL_ARB_half_float_pixel, GL_ARB_texture_query_lod, GL_ARB_multi_bind, GL_ARB_texture_storage_multisample, GL_ATI_separate_stencil, GL_EXT_draw_instanced, GL_AMD_query_buffer_object, GL_ARB_sparse_texture2, GL_OES_read_format, GL_ARB_draw_buffers, GL_EXT_fog_coord, GL_ARB_draw_buffers_blend, GL_EXT_memory_object, GL_ARB_compute_variable_group_size, GL_AMD_framebuffer_multisample_advanced, GL_ARB_invalidate_subdata, GL_ARB_texture_multisample, GL_EXT_multi_draw_arrays, GL_ARB_copy_image, GL_ARB_texture_storage, GL_EXT_compiled_vertex_array, GL_EXT_texture_env_combine, GL_ARB_framebuffer_no_attachments, GL_EXT_blend_func_separate, GL_EXT_window_rectangles, GL_ARB_direct_state_access, GL_ARB_texture_mirrored_repeat, GL_EXT_texture_compression_latc, GL_EXT_bgra, GL_EXT_polygon_offset_clamp, GL_ARB_query_buffer_object, GL_EXT_blend_equation_separate, GL_ARB_shader_bit_encoding, GL_ARB_shader_texture_lod, GL_ARB_transpose_matrix, GL_EXT_gpu_shader4, GL_ARB_fragment_coord_conventions, GL_ARB_program_interface_query, GL_ARB_shader_objects, GL_KHR_no_error, GL_ARB_shader_viewport_layer_array, GL_ARB_tessellation_shader, GL_EXT_shader_samples_identical, GL_ARB_vertex_array_object, GL_EXT_texture, GL_EXT_texture_compression_s3tc, GL_ARB_shader_ballot, GL_ARB_post_depth_coverage, GL_NV_copy_image, GL_ARB_compressed_texture_pixel_storage, GL_EXT_texture_env_dot3, GL_EXT_vertex_array, GL_ARB_spirv_extensions, GL_IBM_texture_mirrored_repeat, GL_MESA_framebuffer_flip_y, GL_EXT_point_parameters, GL_KHR_texture_compression_astc_sliced_3d, GL_EXT_texture_rectangle, GL_ARB_base_instance, GL_ARB_point_sprite, GL_NV_texture_barrier, GL_ARB_texture_filter_anisotropic, GL_EXT_blend_subtract, GL_ARB_gl_spirv, GL_EXT_EGL_image_storage_compression, GL_NV_blend_square, GL_NV_texture_env_combine4, GL_APPLE_packed_pixels, GL_ARB_texture_env_dot3, GL_EXT_texture_lod_bias, GL_EXT_vertex_attrib_64bit, GL_ARB_sparse_texture, GL_ARB_texture_env_combine, GL_EXT_copy_texture, GL_ARB_shader_image_size, GL_EXT_framebuffer_blit, GL_KHR_debug, GL_ARB_ES3_compatibility, GL_SGIS_texture_border_clamp, GL_ARB_separate_shader_objects, GL_EXT_secondary_color, GL_EXT_texture_sRGB_R8, GL_ARB_clip_control, GL_ARB_internalformat_query2, GL_ARB_texture_non_power_of_two, GL_ARB_cull_distance, GL_ARB_ES3_1_compatibility, GL_ARB_window_pos, GL_EXT_framebuffer_multisample, GL_EXT_EGL_sync, GL_ANGLE_texture_compression_dxt3, GL_EXT_texture_mirror_clamp, GL_EXT_subtexture, GL_EXT_texture_array, GL_ARB_texture_compression_bptc, GL_EXT_vertex_array_bgra, GL_ARB_multi_draw_indirect, GL_ARB_framebuffer_object, GL_ARB_shadow, GL_ARB_sparse_buffer, GL_ARB_texture_rectangle, GL_ARB_texture_buffer_range, GL_ARB_parallel_shader_compile, GL_AMD_conservative_depth, GL_ARB_clear_texture, GL_AMD_shader_trinary_minmax, GL_ARB_shading_language_100, GL_ARB_shader_atomic_counter_ops, GL_ARB_seamless_cubemap_per_texture, GL_ARB_texture_cube_map_array, GL_EXT_texture_compression_rgtc, GL_EXT_depth_bounds_test, GL_ARB_draw_elements_base_vertex, GL_ARB_conditional_render_inverted, GL_EXT_texture_env_add, GL_ATI_texture_env_combine3, GL_EXT_shader_integer_mix, GL_ARB_shading_language_420pack, GL_ARB_shader_image_load_store, GL_EXT_abgr, GL_ATI_meminfo, GL_KHR_context_flush_control, GL_ARB_texture_swizzle, GL_EXT_texture_cube_map, GL_ARB_derivative_control, GL_EXT_texture_edge_clamp, GL_EXT_texture3D, GL_ARB_texture_mirror_clamp_to_edge, GL_S3_s3tc, GL_ARB_robust_buffer_access_behavior, GL_ATI_fragment_shader, GL_ARB_ES3_2_compatibility, GL_ARB_map_buffer_range, GL_ARB_draw_indirect, GL_ARB_conservative_depth, GL_ARB_vertex_attrib_binding, GL_ARB_vertex_program, GL_ARB_shader_group_vote, GL_EXT_rescale_normal, GL_ATI_blend_equation_separate, GL_EXT_stencil_wrap, GL_EXT_shadow_funcs, GL_EXT_transform_feedback, GL_NV_compute_shader_derivatives, GL_SGIS_generate_mipmap, GL_ARB_shader_precision, GL_MESA_texture_signed_rgba, GL_ARB_shading_language_include, GL_AMD_depth_clamp_separate, GL_KHR_robust_buffer_access_behavior, GL_ARB_multisample, GL_ARB_texture_cube_map, GL_ARB_seamless_cube_map, GL_EXT_packed_float, GL_EXT_semaphore_fd, GL_ARB_fragment_program, GL_NV_packed_depth_stencil, GL_ARB_map_buffer_alignment, GL_ARB_transform_feedback_instanced, GL_ARB_vertex_array_bgra, GL_ARB_texture_env_crossbar, GL_NV_half_float, GL_ARB_indirect_parameters, GL_EXT_texture_storage, GL_ARB_half_float_vertex, GL_EXT_shader_image_load_store, GL_INTEL_blackhole_render, GL_ARB_texture_float, GL_NV_primitive_restart, GL_ARB_arrays_of_arrays, GL_ARB_shader_draw_parameters, GL_ARB_vertex_buffer_object, GL_EXT_texture_filter_minmax, GL_OES_EGL_image, GL_EXT_framebuffer_object, GL_ARB_occlusion_query, GL_EXT_shader_image_load_formatted, GL_EXT_separate_specular_color, GL_ARB_provoking_vertex, GL_EXT_texture_snorm, GL_ARB_texture_compression_rgtc, GL_ARB_compute_shader, GL_ARB_draw_instanced, GL_NV_ES1_1_compatibility, GL_ARB_robustness, GL_ARB_multitexture, GL_NV_light_max_exponent, GL_ARB_texture_buffer_object, GL_EXT_timer_query, GL_ARB_compatibility, GL_ARB_blend_func_extended, GL_EXT_pixel_buffer_object, GL_EXT_blend_minmax, GL_SGIS_texture_edge_clamp, GL_ARB_texture_rgb10_a2ui, GL_MESA_shader_integer_functions, GL_AMD_vertex_shader_viewport_index, GL_EXT_packed_pixels, GL_ARB_sampler_objects, GL_MESA_texture_const_bandwidth, GL_ARB_pixel_buffer_object, GL_ARB_gpu_shader5, GL_ARB_texture_buffer_object_rgb32, GL_EXT_provoking_vertex, GL_EXT_draw_range_elements, GL_ARB_timer_query, GL_ARB_vertex_shader, GL_NV_copy_depth_to_color, GL_ARB_texture_stencil8, GL_EXT_debug_label, GL_ARB_shader_clock, GL_AMD_draw_buffers_blend, GL_ARB_stencil_texturing, GL_ARB_fragment_program_shadow, GL_ARB_instanced_arrays, GL_ARB_gpu_shader_int64, GL_ARB_shader_texture_image_samples, GL_ARB_texture_barrier, GL_ARB_gpu_shader_fp64, GL_ARB_occlusion_query2, GL_ARB_vertex_type_10f_11f_11f_rev, GL_EXT_gpu_program_parameters, GL_ARB_depth_texture, GL_SGIS_texture_lod, GL_SUN_multi_draw_arrays, GL_ARB_depth_clamp, GL_NV_shader_atomic_int64, GL_ARB_get_program_binary, GL_EXT_blend_color, GL_AMD_seamless_cubemap_per_texture, GL_EXT_packed_depth_stencil, GL_EXT_semaphore, GL_ARB_fragment_layer_viewport, GL_KHR_texture_compression_astc_ldr, GL_ARB_transform_feedback3, GL_ARB_texture_gather, GL_ARB_uniform_buffer_object, GL_EXT_texture_filter_anisotropic, GL_EXT_memory_object_fd, GL_ARB_texture_filter_minmax, GL_EXT_texture_shadow_lod, GL_EXT_texture_shared_exponent, GL_IBM_rasterpos_clip, GL_KHR_robustness, GL_ARB_sample_shading, GL_NV_vdpau_interop, GL_ARB_vertex_attrib_64bit, GL_EXT_texture_integer, GL_ARB_ES2_compatibility, GL_ARB_texture_compression, GL_ARB_texture_rg, GL_ARB_texture_view, GL_EXT_draw_buffers2, GL_NV_alpha_to_coverage_dither_control, GL_NV_texture_rectangle, GL_EXT_texture_object, GL_ARB_texture_query_levels, GL_ARB_polygon_offset_clamp, GL_IBM_multimode_draw_arrays, GL_KHR_parallel_shader_compile, GL_ATI_texture_compression_3dc, GL_AMD_texture_texture4, GL_AMD_pinned_memory, GL_ARB_viewport_array, GL_NVX_gpu_memory_info, GL_AMD_multi_draw_indirect, GL_EXT_texture_sRGB, GL_ATI_texture_mirror_once, GL_ARB_copy_buffer, GL_ARB_sparse_texture_clamp, GL_ARB_transform_feedback_overflow_query, GL_NV_texgen_reflection, GL_ARB_depth_buffer_float, GL_ARB_debug_output, GL_ARB_shading_language_packing, GL_EXT_direct_state_access, GL_ATI_texture_float, GL_ARB_get_texture_sub_image, GL_ARB_color_buffer_float, GL_ARB_shader_atomic_counters, GL_EXT_framebuffer_multisample_blit_scaled, GL_ARB_buffer_storage, GL_ARB_transform_feedback2, GL_ARB_internalformat_query, GL_NV_depth_clamp, GL_EXT_texture_buffer_object, GL_ARB_bindless_texture, GL_ARB_framebuffer_sRGB, GL_NV_fog_distance, GL_AMD_performance_monitor, GL_NV_conditional_render, GL_KHR_blend_equation_advanced, GL_ARB_sync, GL_INGR_blend_func_separate, GL_ARB_enhanced_layouts, GL_EXT_texture_compression_dxt1, GL_ARB_explicit_uniform_location, GL_AMD_vertex_shader_layer, GL_ARB_pipeline_statistics_query, GL_EXT_texture_sRGB_decode, GL_ARB_explicit_attrib_location, GL_EXT_texture_swizzle, GL_ARB_vertex_type_2_10_10_10_rev, GL_MESA_window_pos, GL_ARB_shader_storage_buffer_object
[2024.09.23 18:10:12] OpenGL: QOpenGLContext created, version: 4.4.
[2024.09.23 18:10:12] OpenGL: [TRUE] (Window)
[2024.09.23 18:10:13] Notification daemon product name: Plasma
[2024.09.23 18:10:13] Notification daemon vendor name: KDE
[2024.09.23 18:10:13] Notification daemon version: 6.1.5
[2024.09.23 18:10:13] Notification daemon specification version: 1.2
[2024.09.23 18:10:13] Notification daemon capabilities: body, body-hyperlinks, body-markup, body-images, icon-static, actions, persistence, inline-reply, x-kde-urls, x-kde-origin-name, x-kde-display-appname, inhibitions
[2024.09.23 18:10:15] RPC Error: request 59 got fail with code 400, error PEER_ID_INVALID

Log from terminal:

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

(Telegram:6563): Gdk-CRITICAL **: 18:01:28.880: gdk_monitor_get_scale_factor: assertion 'GDK_IS_MONITOR (monitor)' failed
Can't configure xdg_toplevel with an invalid size QSize(-1, -1)
Could not create default EGL display: EGL_BAD_PARAMETER. Aborting...

This does work on X11 and XWayland

ilya-fedin commented 1 month ago

Can you provide a screenshot of the issue?

iodream commented 1 month ago

Screenshot: Screenshot_20240924_024455

ilya-fedin commented 1 month ago

ps aux | grep Telegram

iodream commented 1 month ago

ps aux | grep Telegram :

[iod ~/Downloads/Telegram]$ ps aux | grep Telegram
iod         1666  1.2  1.0 1730788 167820 ?      Ssl  02:51   0:00 /usr/bin/konsole --workdir /home/iod/Downloads/Telegram
iod         2202 38.5  4.5 1760300 703904 pts/1  Sl+  02:52   0:05 ./Telegram
iod         2287 28.7  1.2 69273456 193944 pts/1 Sl+  02:52   0:01 /home/iod/Downloads/Telegram/Telegram -webviewhelper /tmp/fQLp23f0WjpC2rVP2gxLYbWb-TD-webview-%1
iod         2384  0.0  0.0   9488  6168 pts/2    S+   02:52   0:00 grep Telegram

I also have a webkit backtrace if needed.

ilya-fedin commented 1 month ago

webkit process crash definitely couldn't be fixed on tdesktop side, you have to report that to webkit instead. The best could be done theoretically is somehow detecting the crash and showing "WebView has crashed". Practically, I'm not aware of any webkitgtk API that would inform about that. Do you have any ideas?

iodream commented 1 month ago

Sorry, i was hoping the bug was on Telegram's side because other apps using WebkitGtk such as Epiphany do work.

The bug also happens in Telegram flatpak as well.

ilya-fedin commented 1 month ago

Practically, I'm not aware of any webkitgtk API that would inform about that.

Looks like I found one

iodream commented 1 month ago

I've filed a bug report on Webkit's side, hopefully someone takes a look at it: https://bugs.webkit.org/show_bug.cgi?id=280239

iodream commented 1 month ago

I just did some additional testing: Telegram version 4.9.7 works with mini apps on Wayland. But 4.16.2 broke it. So it looks like some change on Telegram's side did help the crash.

ilya-fedin commented 1 month ago

There's quite a lot of versions between 4.9.7 and 4.16.2. And this doesn't really mean that's a Telegram fault. Maybe Telegram does something valid that is broken on webkit side.

ilya-fedin commented 1 month ago

I've got the new webkitgtk and the bug seem to be that webkitgtk is no longer capable of running without EGL. If I run __EGL_VENDOR_LIBRARY_FILENAMES= epiphany, epiphany hangs even worse than tdesktop (whole UI). It wasn't happening with webkitgtk 2.44.

ilya-fedin commented 1 month ago

I think you chose the wrong component in your report, it should be WebkitGTK, not WebKit2.

0xluc commented 1 month ago

The mini apps worked fine for 2 months, now after updating my machine they're broken again. Once again I've come to the conclusion that the best thing to do is never update arch.

ilya-fedin commented 1 month ago

Well, other distros will get it too. And if webkitgtk won't fix it in 2 years then even Ubuntu LTS will get it. Which is very possible given that it doesn't seem to be a priority for webkitgtk. I'm starting to think that wayland support for web bots is just not feasible and maybe all the code for that should be deleted and the label that Wayland is unsupported returned.

ilya-fedin commented 1 month ago

The only thing stopping me from doing that is the fact that the version of webkitgtk is under control in flatpak and snap so they still work.