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