SeaDve / Kooha

Elegantly record your screen
GNU General Public License v3.0
2.61k stars 70 forks source link

Freezes when trying to start recording. "Kooha is not responding." #314

Open jackra1n opened 2 months ago

jackra1n commented 2 months ago

Affected version

- io.github.seadve.Kooha 2.3.0
- Flatpak: true
- Experimental Features: []

- Language: en_US.UTF-8, en_US, en.UTF-8, en, C

- CPU: AMD Ryzen 9 5900X 12-Core Processor
- GPU: NVIDIA Corporation GA102 [GeForce RTX 3080] (rev a1)

- Distribution: GNOME 46 (Flatpak runtime)
- Desktop Session: gnome
- Display Server: wayland

- GTK 4.14.4
- Libadwaita 1.5.3
- GStreamer 1.22.12
- Pipewire 0.3.83

Bug summary

When I want to start recording it freezes and the only option is to kill the program

Steps to reproduce

  1. Start Kooha and press on "Record" Screenshot from 2024-08-28 11-00-48

  2. Pick the screen and click "Share" Screenshot from 2024-08-28 11-00-59

  3. Kooha freezes Screenshot from 2024-08-28 11-01-14

Expected behavior

Not freeze/crash.

Relevant logs, screenshots, screencasts, etc.

2024-08-28T09:06:15.251319Z  INFO kooha::application: Kooha (io.github.seadve.Kooha)
2024-08-28T09:06:15.251333Z  INFO kooha::application: Version: 2.3.0 ()
2024-08-28T09:06:15.251336Z  INFO kooha::application: Datadir: /app/share/kooha
2024-08-28T09:06:18.908462Z DEBUG kooha::recording: Created screencast proxy version=Ok(5) available_cursor_modes=Ok(CursorMode(HIDDEN | EMBEDDED | METADATA)) available_source_types=Ok(SourceType(MONITOR | WINDOW | VIRTUAL))
2024-08-28T09:06:18.910551Z DEBUG kooha::recording: Selecting sources cursor_mode=CursorMode(EMBEDDED) source_type=SourceType(MONITOR) is_multiple_sources=false restore_token="" persist_mode=Persistent
2024-08-28T09:06:18.914310Z DEBUG kooha::recording: Starting session window_identifier=wayland:$@lGx/.[51\INbg@h'upM>vFW,3lLiJv
[I][02754.191571] pw.context   | [      pipewire.c:  647 pw_init()] version 0.3.83
2024-08-28T09:06:22.020653Z DEBUG kooha::area_selector: Using gl pipeline
[I][02754.211946] pw.conf      | [          conf.c:  404 conf_load()] 0x56433efcc0d0: loaded config '/usr/share/pipewire/client.conf' with 5 items
[I][02754.211972] pw.conf      | [          conf.c:  957 pw_conf_section_for_each()] handle config '/usr/share/pipewire/client.conf' section 'context.properties'
[I][02754.211982] pw.context   | [       context.c:  245 pw_context_new()] 0x56433efd6fd0: parsed 1 context.properties items
[I][02754.212202] pw.conf      | [          conf.c:  957 pw_conf_section_for_each()] handle config '/usr/share/pipewire/client.conf' section 'context.spa-libs'
[I][02754.212224] pw.context   | [       context.c:  346 pw_context_new()] 0x56433efd6fd0: parsed 2 context.spa-libs items
[I][02754.212231] pw.conf      | [          conf.c:  957 pw_conf_section_for_each()] handle config '/usr/share/pipewire/client.conf' section 'context.modules'
[I][02754.212239] pw.module    | [   impl-module.c:  157 pw_context_load_module()] 0x56433efd6fd0: name:libpipewire-module-protocol-native args:(null)
[I][02754.212865] pw.conf      | [          conf.c:  581 load_module()] 0x56433efd6fd0: loaded module libpipewire-module-protocol-native
[I][02754.212879] pw.module    | [   impl-module.c:  157 pw_context_load_module()] 0x56433efd6fd0: name:libpipewire-module-client-node args:(null)
[I][02754.213064] pw.conf      | [          conf.c:  581 load_module()] 0x56433efd6fd0: loaded module libpipewire-module-client-node
[I][02754.213076] pw.module    | [   impl-module.c:  157 pw_context_load_module()] 0x56433efd6fd0: name:libpipewire-module-client-device args:(null)
[I][02754.213180] pw.conf      | [          conf.c:  581 load_module()] 0x56433efd6fd0: loaded module libpipewire-module-client-device
[I][02754.213191] pw.module    | [   impl-module.c:  157 pw_context_load_module()] 0x56433efd6fd0: name:libpipewire-module-adapter args:(null)
[I][02754.213314] pw.conf      | [          conf.c:  581 load_module()] 0x56433efd6fd0: loaded module libpipewire-module-adapter
[I][02754.213324] pw.module    | [   impl-module.c:  157 pw_context_load_module()] 0x56433efd6fd0: name:libpipewire-module-metadata args:(null)
[I][02754.213438] pw.conf      | [          conf.c:  581 load_module()] 0x56433efd6fd0: loaded module libpipewire-module-metadata
[I][02754.213449] pw.module    | [   impl-module.c:  157 pw_context_load_module()] 0x56433efd6fd0: name:libpipewire-module-session-manager args:(null)
[I][02754.213574] pw.conf      | [          conf.c:  581 load_module()] 0x56433efd6fd0: loaded module libpipewire-module-session-manager
[I][02754.213585] pw.context   | [       context.c:  350 pw_context_new()] 0x56433efd6fd0: parsed 6 context.modules items
[I][02754.213591] pw.context   | [       context.c:  355 pw_context_new()] 0x56433efd6fd0: parsed 0 context.objects items
[I][02754.213598] pw.context   | [       context.c:  358 pw_context_new()] 0x56433efd6fd0: parsed 0 context.exec items
[W][02754.213626] default      | [        thread.c:  105 impl_acquire_rt()] acquire_rt thread:0x7f181d2006c0 prio:-1 not implemented
[I][02754.213637] pw.metadata  | [ impl-metadata.c:  186 impl_set_property()] 0x56433efd5d80: add id:0 key:log.level type: value:0
[I][02754.213645] pw.metadata  | [ impl-metadata.c:  186 impl_set_property()] 0x56433efd5d80: add id:0 key:clock.rate type: value:48000
[I][02754.213651] pw.metadata  | [ impl-metadata.c:  186 impl_set_property()] 0x56433efd5d80: add id:0 key:clock.allowed-rates type: value:[ 48000 ]
[I][02754.213658] pw.metadata  | [ impl-metadata.c:  186 impl_set_property()] 0x56433efd5d80: add id:0 key:clock.quantum type: value:1024
[I][02754.213664] pw.metadata  | [ impl-metadata.c:  186 impl_set_property()] 0x56433efd5d80: add id:0 key:clock.min-quantum type: value:32
[I][02754.213671] pw.metadata  | [ impl-metadata.c:  186 impl_set_property()] 0x56433efd5d80: add id:0 key:clock.max-quantum type: value:2048
[I][02754.213677] pw.metadata  | [ impl-metadata.c:  186 impl_set_property()] 0x56433efd5d80: add id:0 key:clock.force-quantum type: value:0
[I][02754.213683] pw.metadata  | [ impl-metadata.c:  186 impl_set_property()] 0x56433efd5d80: add id:0 key:clock.force-rate type: value:0
[I][02754.213763] pw.conf      | [          conf.c:  957 pw_conf_section_for_each()] handle config '/usr/share/pipewire/client.conf' section 'stream.properties'
0:00:06.780666496     2 0x7f1820001490 FIXME                default gstutils.c:4036:gst_pad_create_stream_id_internal:<pipewiresrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:06.788687531     2 0x7f17f0007540 FIXME              glcontext gstglcontext.c:2038:gst_gl_wrapped_context_get_config:<glwrappedcontext0> wrapped context could not retrieve config. The application may be missing a call to gst_gl_context_fill_info() or the specific platform implemention is not implemented for retrieving the config from a wrapped OpenGL context.
0:00:06.789683410     2 0x7f17f0007540 WARN               glcontext gstglcontext.c:1326:gst_gl_context_create_thread:<glcontextegl0> Failed to create context
0:00:06.789724461     2 0x7f1820001490 WARN            glbasefilter gstglbasefilter.c:617:gst_gl_base_filter_find_gl_context_unlocked:<gluploadelement0> error: Failed to create a OpenGL context: EGL_BAD_CONTEXT
0:00:06.790147889     2 0x7f17f00075a0 FIXME              glcontext gstglcontext.c:2038:gst_gl_wrapped_context_get_config:<glwrappedcontext0> wrapped context could not retrieve config. The application may be missing a call to gst_gl_context_fill_info() or the specific platform implemention is not implemented for retrieving the config from a wrapped OpenGL context.
0:00:06.791076637     2 0x7f17f00075a0 WARN               glcontext gstglcontext.c:1326:gst_gl_context_create_thread:<glcontextegl1> Failed to create context
0:00:06.791117858     2 0x7f1820001490 WARN            glbasefilter gstglbasefilter.c:617:gst_gl_base_filter_find_gl_context_unlocked:<glcolorconvertelement0> error: Failed to create a OpenGL context: EGL_BAD_CONTEXT
0:00:06.805244221     2 0x7f17f0007540 FIXME              glcontext gstglcontext.c:2038:gst_gl_wrapped_context_get_config:<glwrappedcontext0> wrapped context could not retrieve config. The application may be missing a call to gst_gl_context_fill_info() or the specific platform implemention is not implemented for retrieving the config from a wrapped OpenGL context.
0:00:06.806460645     2 0x7f17f0007540 WARN               glcontext gstglcontext.c:1326:gst_gl_context_create_thread:<glcontextegl2> Failed to create context
0:00:06.806495346     2 0x7f1820001490 WARN            glbasefilter gstglbasefilter.c:617:gst_gl_base_filter_find_gl_context_unlocked:<gluploadelement0> error: Failed to create a OpenGL context: EGL_BAD_CONTEXT
0:00:06.806516996     2 0x7f1820001490 WARN           basetransform gstbasetransform.c:1600:gst_base_transform_default_query:<gluploadelement0:sink> no caps can be handled by this pad
0:00:06.806542646     2 0x7f1820001490 WARN             pipewiresrc gstpipewiresrc.c:965:gst_pipewire_src_negotiate:<pipewiresrc0> error: No supported formats found
0:00:06.806550177     2 0x7f1820001490 WARN             pipewiresrc gstpipewiresrc.c:965:gst_pipewire_src_negotiate:<pipewiresrc0> error: This element does not have formats in common with the peer
[W][02754.239771] pw.stream    | [        stream.c: 2168 pw_stream_set_error()] pw_stream_set_error called from wrong context, check thread and locking: Operation not permitted
*** pw_stream_set_error called from wrong context, check thread and locking: Operation not permitted
[E][02754.239804] pw.stream    | [        stream.c:  403 stream_set_state()] 0x56433f002d50: error (-32) No supported formats found
[W][02754.239818] pw.stream    | [        stream.c: 2168 pw_stream_set_error()] pw_stream_set_error called from wrong context, check thread and locking: Operation not permitted
*** pw_stream_set_error called from wrong context, check thread and locking: Operation not permitted
0:00:06.806632748     2 0x7f1820001490 WARN             pipewiresrc gstpipewiresrc.c:685:on_state_changed:<pipewiresrc0> error: stream error: No supported formats found
0:00:06.806650869     2 0x7f1820001490 WARN                 basesrc gstbasesrc.c:3134:gst_base_src_loop:<pipewiresrc0> error: Internal data stream error.
0:00:06.806657899     2 0x7f1820001490 WARN                 basesrc gstbasesrc.c:3134:gst_base_src_loop:<pipewiresrc0> error: streaming stopped, reason not-negotiated (-4)
2024-08-28T09:06:22.050899Z ERROR kooha::window: Element failed to change its state

Stack backtrace:
   0: <unknown>
   1: <unknown>
   2: <unknown>
   3: <unknown>
   4: <unknown>
   5: <unknown>
   6: g_main_context_iteration
   7: g_application_run
   8: <unknown>
   9: <unknown>
  10: <unknown>
  11: <unknown>
  12: __libc_start_main
  13: <unknown>
2024-08-28T09:06:22.070661Z DEBUG kooha::area_selector: Pipeline changed state from `Null` -> `Ready`
2024-08-28T09:06:22.070694Z ERROR kooha::area_selector: Received error message on bus: Error { structure: Some(GstMessageError { gerror: (GError) ((GError*) 0x7f17f001de60), debug: (gchararray) "../gst-libs/gst/gl/gstglbasefilter.c(617): gst_gl_base_filter_find_gl_context_unlocked (): /GstPipeline:pipeline0/GstGLSinkBin:glsinkbin0/GstGLUploadElement:gluploadelement0" }), source: Some((Object { inner: TypedObjectRef { inner: 0x56433efc28f0, type: GstGLUploadElement } }, "gluploadelement0")), error: Error { domain: gst-resource-error-quark, code: 3, message: "Failed to create a OpenGL context: EGL_BAD_CONTEXT" }, debug: Some("../gst-libs/gst/gl/gstglbasefilter.c(617): gst_gl_base_filter_find_gl_context_unlocked (): /GstPipeline:pipeline0/GstGLSinkBin:glsinkbin0/GstGLUploadElement:gluploadelement0"), details: None }
Inmoresentum commented 2 months ago

Similar issue with flatpak :(. For the time being I have switched to pypeek which seems to work nicely.