Bug#913072: Bug #913072: cheese segfaults when using the "-d" command line option

Bernhard Übelacker bernhardu at mailbox.org
Mon Nov 12 22:37:59 GMT 2018


Dear Maintainer,
I could reproduce this issue with a stretch amd64 VM,
forwarding an USB webcam into it.

This seems to be upstream bug [1] and is fixed in upstream git in [2].

A local build cheese package containing the commit [2] does
not crash that way.

Upstream version 3.26 and above should contain this patch already.

[1] https://bugzilla.gnome.org/show_bug.cgi?id=777047
[2] https://gitlab.gnome.org/GNOME/cheese/commit/c8c75796ff3e723d77bd68dec3fe91a072b36fc4

Kind regards,
Bernhard
-------------- next part --------------

apt update
apt dist-upgrade
apt autoremove

apt install dpkg-dev devscripts xserver-xorg lightdm openbox mc dbus-x11 gdb systemd-coredump v4l-utils v4l-utils-dbgsym gstreamer1.0-tools cheese cheese-dbgsym libcheese8-dbgsym libgstreamer1.0-0-dbg
apt build-dep cheese


systemctl start lightdm

(host) chmod 666 /dev/bus/usb/001/004
(qemu) device_add usb-host,vendorid=0x093a,productid=0x2600,id=usbcamera




mkdir cheese/orig -p
cd    cheese/orig
apt source cheese
cd ../..


mkdir gstreamer1.0/orig -p
cd    gstreamer1.0/orig
apt source gstreamer1.0
cd ../..


mkdir v4l-utils/orig -p
cd    v4l-utils/orig
apt source v4l-utils
cd ../..


mkdir glib2.0/orig -p
cd    glib2.0/orig
apt source glib2.0
cd ../..




export DISPLAY=:0
export LANG=C




benutzer at debian:~$ cheese -d /dev/video0

(cheese:25334): Gtk-WARNING **: Theme parsing error: cheese.css:7:35: The style property GtkScrollbar:min-slider-length is deprecated and shouldn't be used anymore. It will be removed in a future version
Segmentation fault (core dumped)




[  596.999350] traps: cheese[25334] general protection ip:7ff18d848931 sp:7ffe7c286ef0 error:0
[  596.999356]  in libgobject-2.0.so.0.5000.3[7ff18d834000+52000]




root at debian:~# coredumpctl gdb 25334
           PID: 25334 (cheese)
           UID: 1000 (benutzer)
           GID: 1000 (benutzer)
        Signal: 11 (SEGV)
     Timestamp: Mon 2018-11-12 22:51:53 CET (1min 6s ago)
  Command Line: cheese -d /dev/video0
    Executable: /usr/bin/cheese
 Control Group: /user.slice/user-1000.slice/session-3.scope
          Unit: session-3.scope
         Slice: user-1000.slice
       Session: 3
     Owner UID: 1000 (benutzer)
       Boot ID: 3058ef7de6c84f438332960c93fc5881
    Machine ID: 9e5901179cfe4b73bc18669e6a6e0ab9
      Hostname: debian
       Storage: /var/lib/systemd/coredump/core.cheese.1000.3058ef7de6c84f438332960c93fc5881.25334.1542059513000000000000.lz4
       Message: Process 25334 (cheese) of user 1000 dumped core.
                
                Stack trace of thread 25334:
                #0  0x00007ff18d848931 n/a (libgobject-2.0.so.0)
                #1  0x00007ff18d84b57c g_object_set_valist (libgobject-2.0.so.0)
                #2  0x00007ff18d84be6c g_object_set (libgobject-2.0.so.0)
                #3  0x00007ff18fb427a5 cheese_camera_setup (libcheese.so.8)
                #4  0x0000560adcb465eb cheese_application_setup_camera (cheese)
                #5  0x0000560adcb4696b n/a (cheese)
                #6  0x00007ff18d843f75 g_closure_invoke (libgobject-2.0.so.0)
                #7  0x00007ff18d85637d n/a (libgobject-2.0.so.0)
                #8  0x00007ff18d85ebdc g_signal_emit_valist (libgobject-2.0.so.0)
                #9  0x00007ff18d85efbf g_signal_emit (libgobject-2.0.so.0)
                #10 0x0000560adcb454d3 n/a (cheese)
                #11 0x00007ff1869c9038 ffi_call_unix64 (libffi.so.6)
                #12 0x00007ff1869c8a9a ffi_call (libffi.so.6)
                #13 0x00007ff18d844c8a g_cclosure_marshal_generic_va (libgobject-2.0.so.0)
                #14 0x00007ff18d8441a4 n/a (libgobject-2.0.so.0)
                #15 0x00007ff18d85e3a1 g_signal_emit_valist (libgobject-2.0.so.0)
                #16 0x00007ff18d85efbf g_signal_emit (libgobject-2.0.so.0)
                #17 0x00007ff18db24473 n/a (libgio-2.0.so.0)
                #18 0x00007ff18db264c4 n/a (libgio-2.0.so.0)
                #19 0x00007ff18db26692 g_application_run (libgio-2.0.so.0)
                #20 0x0000560adcb4e620 _vala_main (cheese)
                #21 0x00007ff18cf842e1 __libc_start_main (libc.so.6)
                #22 0x0000560adcb44f4a _start (cheese)
                
                Stack trace of thread 25341:
                #0  0x00007ff18d31015f pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007ff17e2eac33 n/a (swrast_dri.so)
                #2  0x00007ff17e2eaa97 n/a (swrast_dri.so)
                #3  0x00007ff18d30a494 start_thread (libpthread.so.0)
                #4  0x00007ff18d04cacf __clone (libc.so.6)
                
                Stack trace of thread 25337:
                #0  0x00007ff18d04367d poll (libc.so.6)
                #1  0x00007ff18d56a9f6 n/a (libglib-2.0.so.0)
                #2  0x00007ff18d56ad82 g_main_loop_run (libglib-2.0.so.0)
                #3  0x00007ff18db52656 n/a (libgio-2.0.so.0)
                #4  0x00007ff18d5923d5 n/a (libglib-2.0.so.0)
                #5  0x00007ff18d30a494 start_thread (libpthread.so.0)
                #6  0x00007ff18d04cacf __clone (libc.so.6)
                
                Stack trace of thread 25336:
                #0  0x00007ff18d04367d poll (libc.so.6)
                #1  0x00007ff18d56a9f6 n/a (libglib-2.0.so.0)
                #2  0x00007ff18d56ab0c g_main_context_iteration (libglib-2.0.so.0)
                #3  0x00007ff18d56ab51 n/a (libglib-2.0.so.0)
                #4  0x00007ff18d5923d5 n/a (libglib-2.0.so.0)
                #5  0x00007ff18d30a494 start_thread (libpthread.so.0)
                #6  0x00007ff18d04cacf __clone (libc.so.6)
                
                Stack trace of thread 25343:
                #0  0x00007ff18d04367d poll (libc.so.6)
                #1  0x00007ff18d56a9f6 n/a (libglib-2.0.so.0)
                #2  0x00007ff18d56ad82 g_main_loop_run (libglib-2.0.so.0)
                #3  0x00007ff16a478f05 n/a (libgstvideo4linux2.so)
                #4  0x00007ff18d5923d5 n/a (libglib-2.0.so.0)
                #5  0x00007ff18d30a494 start_thread (libpthread.so.0)
                #6  0x00007ff18d04cacf __clone (libc.so.6)
                
                Stack trace of thread 25338:
                #0  0x00007ff18d04367d poll (libc.so.6)
                #1  0x00007ff18d56a9f6 n/a (libglib-2.0.so.0)
                #2  0x00007ff18d56ab0c g_main_context_iteration (libglib-2.0.so.0)
                #3  0x00007ff17fa5446d n/a (libdconfsettings.so)
                #4  0x00007ff18d5923d5 n/a (libglib-2.0.so.0)
                #5  0x00007ff18d30a494 start_thread (libpthread.so.0)
                #6  0x00007ff18d04cacf __clone (libc.so.6)
                
                Stack trace of thread 25339:
                #0  0x00007ff18d31015f pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007ff17e2eac33 n/a (swrast_dri.so)
                #2  0x00007ff17e2eaa97 n/a (swrast_dri.so)
                #3  0x00007ff18d30a494 start_thread (libpthread.so.0)
                #4  0x00007ff18d04cacf __clone (libc.so.6)
                
                Stack trace of thread 25340:
                #0  0x00007ff18d31015f pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007ff17e2eac33 n/a (swrast_dri.so)
                #2  0x00007ff17e2eaa97 n/a (swrast_dri.so)
                #3  0x00007ff18d30a494 start_thread (libpthread.so.0)
                #4  0x00007ff18d04cacf __clone (libc.so.6)
                
                Stack trace of thread 25342:
                #0  0x00007ff18d31015f pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007ff17e2eac33 n/a (swrast_dri.so)
                #2  0x00007ff17e2eaa97 n/a (swrast_dri.so)
                #3  0x00007ff18d30a494 start_thread (libpthread.so.0)
                #4  0x00007ff18d04cacf __clone (libc.so.6)

GNU gdb (Debian 7.12-6) 7.12.0.20161007-git
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/cheese...(no debugging symbols found)...done.
[New LWP 25334]
[New LWP 25341]
[New LWP 25337]
[New LWP 25336]
[New LWP 25343]
[New LWP 25338]
[New LWP 25339]
[New LWP 25340]
[New LWP 25342]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `cheese -d /dev/video0'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007ff18d848931 in ?? () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
[Current thread is 1 (Thread 0x7ff18fe83a80 (LWP 25334))]
(gdb) set pagination off
(gdb) set height 0
(gdb) bt
#0  0x00007ff18d848931 in ?? () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#1  0x00007ff18d84b57c in g_object_set_valist () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#2  0x00007ff18d84be6c in g_object_set () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#3  0x00007ff18fb427a5 in cheese_camera_setup () from /usr/lib/x86_64-linux-gnu/libcheese.so.8
#4  0x0000560adcb465eb in cheese_application_setup_camera ()
#5  0x0000560adcb4696b in ?? ()
#6  0x00007ff18d843f75 in g_closure_invoke () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#7  0x00007ff18d85637d in ?? () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#8  0x00007ff18d85ebdc in g_signal_emit_valist () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#9  0x00007ff18d85efbf in g_signal_emit () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#10 0x0000560adcb454d3 in ?? ()
#11 0x00007ff1869c9038 in ffi_call_unix64 () from /usr/lib/x86_64-linux-gnu/libffi.so.6
#12 0x00007ff1869c8a9a in ffi_call () from /usr/lib/x86_64-linux-gnu/libffi.so.6
#13 0x00007ff18d844c8a in g_cclosure_marshal_generic_va () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#14 0x00007ff18d8441a4 in ?? () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#15 0x00007ff18d85e3a1 in g_signal_emit_valist () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#16 0x00007ff18d85efbf in g_signal_emit () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#17 0x00007ff18db24473 in ?? () from /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#18 0x00007ff18db264c4 in ?? () from /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#19 0x00007ff18db26692 in g_application_run () from /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#20 0x0000560adcb4e620 in _vala_main ()
#21 0x00007ff18cf842e1 in __libc_start_main (main=0x560adcb44f00 <main>, argc=3, argv=0x7ffe7c287e98, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffe7c287e88) at ../csu/libc-start.c:291
#22 0x0000560adcb44f4a in _start ()


(gdb) bt
#0  0x00007ff18d848931 in g_value_object_collect_value (value=0x7ffe7c286f40, n_collect_values=<optimized out>, collect_values=0x7ffe7c286f80, collect_flags=0) at ././gobject/gobject.c:3669
#1  0x00007ff18d84b57c in g_object_set_valist (object=object at entry=0x560adda2d340 [CheeseCamera], first_property_name=first_property_name at entry=0x7ff18fb4727d "device", var_args=var_args at entry=0x7ffe7c287010) at ././gobject/gobject.c:2156
#2  0x00007ff18d84be6c in g_object_set (_object=0x560adda2d340, first_property_name=0x7ff18fb4727d "device") at ././gobject/gobject.c:2277
#3  0x00007ff18fb427a5 in cheese_camera_setup (camera=camera at entry=0x560adda2d340 [CheeseCamera], device=0x560adde1cc00, error=error at entry=0x7ffe7c287180) at libcheese/cheese-camera.c:1561
#4  0x0000560adcb465eb in cheese_application_setup_camera (self=self at entry=0x560add9a8100 [CheeseApplication]) at src/cheese-application.c:536
#5  0x0000560adcb4696b in cheese_application_common_init (self=0x560add9a8100 [CheeseApplication]) at src/cheese-application.c:346
#9  0x00007ff18d85efbf in <emit signal ??? on instance 0x560add9a8100 [CheeseApplication]> (instance=instance at entry=0x560add9a8100, signal_id=<optimized out>, detail=detail at entry=0) at ././gobject/gsignal.c:3447
    #6  0x00007ff18d843f75 in g_closure_invoke (closure=closure at entry=0x560add9a5ce0, return_value=return_value at entry=0x0, n_param_values=1, param_values=param_values at entry=0x7ffe7c2873a0, invocation_hint=invocation_hint at entry=0x7ffe7c287320) at ././gobject/gclosure.c:804
    #7  0x00007ff18d85637d in signal_emit_unlocked_R (node=node at entry=0x560add9a5d10, detail=detail at entry=0, instance=instance at entry=0x560add9a8100, emission_return=emission_return at entry=0x0, instance_and_params=instance_and_params at entry=0x7ffe7c2873a0) at ././gobject/gsignal.c:3673
    #8  0x00007ff18d85ebdc in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args at entry=0x7ffe7c287550) at ././gobject/gsignal.c:3391
#10 0x00007ff18db25cdb in g_application_activate (application=application at entry=0x560add9a8100 [CheeseApplication]) at ././gio/gapplication.c:2148
#11 0x0000560adcb454d3 in cheese_application_real_command_line (base=0x560add9a8100 [CheeseApplication], cl=<optimized out>) at src/cheese-application.c:426
#12 0x00007ff1869c9038 in ffi_call_unix64 () at ../src/x86/unix64.S:76
#13 0x00007ff1869c8a9a in ffi_call (cif=cif at entry=0x7ffe7c287880, fn=fn at entry=0x560adcb45450 <cheese_application_real_command_line>, rvalue=<optimized out>, avalue=avalue at entry=0x7ffe7c287770) at ../src/x86/ffi64.c:525
#14 0x00007ff18d844c8a in g_cclosure_marshal_generic_va (closure=0x560add9a5c90, return_value=0x7ffe7c287a40, instance=<optimized out>, args_list=<optimized out>, marshal_data=<optimized out>, n_params=1, param_types=0x560add9a5ff0) at ././gobject/gclosure.c:1604
#15 0x00007ff18d8441a4 in _g_closure_invoke_va (closure=closure at entry=0x560add9a5c90, return_value=return_value at entry=0x7ffe7c287a40, instance=instance at entry=0x560add9a8100, args=args at entry=0x7ffe7c287b10, n_params=<optimized out>, param_types=0x560add9a5ff0) at ././gobject/gclosure.c:867
#16 0x00007ff18d85e3a1 in g_signal_emit_valist (instance=0x560add9a8100, signal_id=<optimized out>, detail=0, var_args=var_args at entry=0x7ffe7c287b10) at ././gobject/gsignal.c:3300
#17 0x00007ff18d85efbf in g_signal_emit (instance=instance at entry=0x560add9a8100, signal_id=<optimized out>, detail=detail at entry=0) at ././gobject/gsignal.c:3447
#18 0x00007ff18db24473 in g_application_call_command_line (application=0x560add9a8100 [CheeseApplication], arguments=<optimized out>, options=<optimized out>, exit_status=0x7ffe7c287d44) at ././gio/gapplication.c:982
#19 0x00007ff18db264c4 in g_application_real_local_command_line (application=0x560add9a8100 [CheeseApplication], arguments=0x7ffe7c287d48, exit_status=0x7ffe7c287d44) at ././gio/gapplication.c:1036
#20 0x00007ff18db26692 in g_application_run (application=0x560add9a8100 [CheeseApplication], argc=3, argv=0x7ffe7c287e98) at ././gio/gapplication.c:2350
#21 0x0000560adcb4e620 in _vala_main (args=0x7ffe7c287e98, args_length1=3) at src/cheese-main.c:68
#22 0x00007ff18cf842e1 in __libc_start_main (main=0x560adcb44f00 <main>, argc=3, argv=0x7ffe7c287e98, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffe7c287e88) at ../csu/libc-start.c:291
#23 0x0000560adcb44f4a in _start ()



(gdb) disassemble /m g_value_object_collect_value 
Dump of assembler code for function g_value_object_collect_value:
3659    {
   0x00007ff18d848910 <+0>:     push   %rbp
   0x00007ff18d848911 <+1>:     push   %rbx
   0x00007ff18d848912 <+2>:     sub    $0x8,%rsp

3660      if (collect_values[0].v_pointer)
   0x00007ff18d848916 <+6>:     mov    (%rdx),%rbp
   0x00007ff18d848919 <+9>:     test   %rbp,%rbp
   0x00007ff18d84891c <+12>:    je     0x7ff18d8489c8 <g_value_object_collect_value+184>

3661        {
3662          GObject *object = collect_values[0].v_pointer;
3663          
3664          if (object->g_type_instance.g_class == NULL)
   0x00007ff18d848922 <+18>:    mov    0x0(%rbp),%rax
   0x00007ff18d848926 <+22>:    mov    %rdi,%rbx
   0x00007ff18d848929 <+25>:    test   %rax,%rax
   0x00007ff18d84892c <+28>:    je     0x7ff18d848980 <g_value_object_collect_value+112>

3665            return g_strconcat ("invalid unclassed object pointer for value type '",
   0x00007ff18d848980 <+112>:   mov    (%rdi),%rdi
   0x00007ff18d848983 <+115>:   callq  0x7ff18d865b60 <g_type_name>
   0x00007ff18d84898c <+124>:   lea    0x2acc5(%rip),%rdx        # 0x7ff18d873658
   0x00007ff18d848993 <+131>:   lea    0x29cf6(%rip),%rdi        # 0x7ff18d872690
   0x00007ff18d84899c <+140>:   mov    %rax,%rsi
   0x00007ff18d84899f <+143>:   xor    %ecx,%ecx
   0x00007ff18d8489a1 <+145>:   xor    %eax,%eax
   0x00007ff18d8489a3 <+147>:   jmpq   0x7ff18d83ea60 <g_strconcat at plt>
   0x00007ff18d8489a8 <+152>:   nopl   0x0(%rax,%rax,1)

3666                                G_VALUE_TYPE_NAME (value),
3667                                "'",
3668                                NULL);
3669          else if (!g_value_type_compatible (G_OBJECT_TYPE (object), G_VALUE_TYPE (value)))
   0x00007ff18d84892e <+30>:    mov    (%rdi),%rsi
=> 0x00007ff18d848931 <+33>:    mov    (%rax),%rdi
   0x00007ff18d848934 <+36>:    callq  0x7ff18d86b9b0 <g_value_type_compatible>
   0x00007ff18d848939 <+41>:    test   %eax,%eax
   0x00007ff18d84893b <+43>:    jne    0x7ff18d8489b0 <g_value_object_collect_value+160>

3670            return g_strconcat ("invalid object type '",
...



(gdb) print/x $rdi
$4 = 0x7ffe7c286f40
(gdb) print/x $rax
$5 = 0x6469762f7665642f

(gdb) print/x object
$6 = 0x560adde1cc00
(gdb) print/x value
$7 = 0x7ffe7c286f40

(gdb) print/x *object
$8 = {g_type_instance = {g_class = 0x6469762f7665642f}, ref_count = 0x306f65, qdata = 0x0}
(gdb) print/x *value
$9 = {g_type = 0x560ade19bcc0, data = {{v_int = 0x0, v_uint = 0x0, v_long = 0x0, v_ulong = 0x0, v_int64 = 0x0, v_uint64 = 0x0, v_float = 0x0, v_double = 0x0, v_pointer = 0x0}, {v_int = 0x0, v_uint = 0x0, v_long = 0x0, v_ulong = 0x0, v_int64 = 0x0, v_uint64 = 0x0, v_float = 0x0, v_double = 0x0, v_pointer = 0x0}}}

(gdb) print (char*)object
$4 = 0x560adde1cc00 "/dev/video0"



(gdb) list cheese_camera_setup
1539    void
1540    cheese_camera_setup (CheeseCamera *camera, CheeseCameraDevice *device, GError **error)
1541    {
1542      CheeseCameraPrivate *priv;
1543      GError  *tmp_error = NULL;
1544      GstElement *video_sink;
1545
1546      g_return_if_fail (error == NULL || *error == NULL);
1547      g_return_if_fail (CHEESE_IS_CAMERA (camera));
1548
1549        priv = cheese_camera_get_instance_private (camera);
1550
1551      cheese_camera_detect_camera_devices (camera);
1552
1553      if (priv->num_camera_devices < 1)
1554      {
1555        g_set_error (error, CHEESE_CAMERA_ERROR, CHEESE_CAMERA_ERROR_NO_DEVICE, _("No device found"));
1556        return;
1557      }
1558
1559      if (device != NULL)
1560      {
1561        cheese_camera_set_device (camera, device);
1562      }
1563      else



#####################


(gdb) list 462,536
462     void cheese_application_setup_camera (CheeseApplication* self) {
463             GSimpleAction* effects = NULL;
464             GAction* _tmp0_ = NULL;
465             GSimpleAction* _tmp1_ = NULL;
466             GSimpleAction* mode = NULL;
467             GAction* _tmp2_ = NULL;
468             GSimpleAction* _tmp3_ = NULL;
469             GSimpleAction* shoot = NULL;
470             GAction* _tmp4_ = NULL;
471             GSimpleAction* _tmp5_ = NULL;
472             GSimpleAction* _tmp6_ = NULL;
473             GSimpleAction* _tmp7_ = NULL;
474             GSimpleAction* _tmp8_ = NULL;
475             ClutterActor* video_preview = NULL;
476             CheeseMainWindow* _tmp9_ = NULL;
477             ClutterActor* _tmp10_ = NULL;
478             ClutterActor* _tmp11_ = NULL;
479             const gchar* _tmp12_ = NULL;
480             GSettings* _tmp13_ = NULL;
481             gint _tmp14_ = 0;
482             GSettings* _tmp15_ = NULL;
483             gint _tmp16_ = 0;
484             CheeseCamera* _tmp17_ = NULL;
485             gdouble value = 0.0;
486             GSettings* _tmp26_ = NULL;
487             gdouble _tmp27_ = 0.0;
488             gdouble _tmp28_ = 0.0;
489             GSettings* _tmp31_ = NULL;
490             gdouble _tmp32_ = 0.0;
491             gdouble _tmp33_ = 0.0;
492             GSettings* _tmp36_ = NULL;
493             gdouble _tmp37_ = 0.0;
494             gdouble _tmp38_ = 0.0;
495             GSettings* _tmp41_ = NULL;
496             gdouble _tmp42_ = 0.0;
497             gdouble _tmp43_ = 0.0;
498             CheeseCamera* _tmp46_ = NULL;
499             CheeseMainWindow* _tmp47_ = NULL;
500             CheeseCamera* _tmp48_ = NULL;
501             CheeseCamera* _tmp49_ = NULL;
502             GError * _inner_error_ = NULL;
503             g_return_if_fail (self != NULL);
504             _tmp0_ = g_action_map_lookup_action ((GActionMap*) self, "effects");
505             _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, g_simple_action_get_type ()) ? ((GSimpleAction*) _tmp0_) : NULL);
506             effects = _tmp1_;
507             _tmp2_ = g_action_map_lookup_action ((GActionMap*) self, "mode");
508             _tmp3_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, g_simple_action_get_type ()) ? ((GSimpleAction*) _tmp2_) : NULL);
509             mode = _tmp3_;
510             _tmp4_ = g_action_map_lookup_action ((GActionMap*) self, "shoot");
511             _tmp5_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, g_simple_action_get_type ()) ? ((GSimpleAction*) _tmp4_) : NULL);
512             shoot = _tmp5_;
513             _tmp6_ = effects;
514             g_simple_action_set_enabled (_tmp6_, FALSE);
515             _tmp7_ = mode;
516             g_simple_action_set_enabled (_tmp7_, FALSE);
517             _tmp8_ = shoot;
518             g_simple_action_set_enabled (_tmp8_, FALSE);
519             _tmp9_ = cheese_application_main_window;
520             _tmp10_ = cheese_main_window_get_video_preview (_tmp9_);
521             video_preview = _tmp10_;
522             _tmp11_ = video_preview;
523             _tmp12_ = cheese_application_device;
524             _tmp13_ = self->priv->settings;
525             _tmp14_ = g_settings_get_int (_tmp13_, "photo-x-resolution");
526             _tmp15_ = self->priv->settings;
527             _tmp16_ = g_settings_get_int (_tmp15_, "photo-y-resolution");
528             _tmp17_ = cheese_camera_new (_tmp11_, _tmp12_, _tmp14_, _tmp16_);
529             _g_object_unref0 (self->priv->camera);
530             self->priv->camera = _tmp17_;
531             {
532                     CheeseCamera* _tmp18_ = NULL;
533                     const gchar* _tmp19_ = NULL;
534                     _tmp18_ = self->priv->camera;
535                     _tmp19_ = cheese_application_device;
536                     cheese_camera_setup (_tmp18_, _tmp19_, &_inner_error_);


(gdb) print _tmp19_
$8 = <optimized out>
(gdb) print cheese_application_device
$9 = (gchar *) 0x555555c8b290 "/dev/video0"


#####################





export DISPLAY=:0
export LANG=C

gdb -q --args cheese -d /dev/video0

set pagination off
set height 0
directory /home/benutzer/cheese/orig/cheese-3.22.1
directory /home/benutzer/gstreamer1.0/orig/gstreamer1.0-1.14.4/gst
directory /home/benutzer/v4l-utils/orig/v4l-utils-1.14.2/utils/v4l2-ctl
directory /home/benutzer/glib2.0/orig/glib2.0-2.50.3
b cheese_camera_setup
b cheese_application_setup_camera
run



####################



https://bugzilla.gnome.org/show_bug.cgi?id=777047
https://gitlab.gnome.org/GNOME/cheese/commit/c8c75796ff3e723d77bd68dec3fe91a072b36fc4



cd cheese
cp orig try1 -a
cd try1/cheese-3.22.1/
wget https://gitlab.gnome.org/GNOME/cheese/commit/c8c75796ff3e723d77bd68dec3fe91a072b36fc4.patch -O debian/patches/0001_Correctly_select_the_given_camera_device.patch
echo 0001_Correctly_select_the_given_camera_device.patch >> debian/patches/series
dpkg-buildpackage


More information about the pkg-gnome-maintainers mailing list