clutter issueshttps://gitlab.gnome.org/Archive/clutter/-/issues2021-01-16T20:28:52Zhttps://gitlab.gnome.org/Archive/clutter/-/issues/21https://www.clutter-project.org/ does not seem to exist anymore2021-01-16T20:28:52ZAron Granberghttps://www.clutter-project.org/ does not seem to exist anymoreThis is linked to from the readme.This is linked to from the readme.https://gitlab.gnome.org/Archive/clutter/-/issues/20Micro freezes with black screen in GNOME on Wayland when using multiple GPUs2021-01-21T11:15:37ZDaniel MacielMicro freezes with black screen in GNOME on Wayland when using multiple GPUsI'm facing an annoying issue with Wayland when multiple GPUs are attached to my system (in my case, an RX 580 and a 5700 XT).
It's not consistently reproducible, as it happens somewhat randomly, but I've seen the behavior when opening a...I'm facing an annoying issue with Wayland when multiple GPUs are attached to my system (in my case, an RX 580 and a 5700 XT).
It's not consistently reproducible, as it happens somewhat randomly, but I've seen the behavior when opening a few apps (Firefox and VLC have triggered it), when I open Display Settings or when I'm opening nothing at all, just reading a website or watching a video on YouTube.
The screen goes black and unresponsive for about a second (audio continues to play if it was playing before) and then returns.
It does not happen on X.Org, it does not happen on other OSs (I triple boot macOS and Windows 10 in this machine) and it does not happen when I disconnect one of my GPUs. It only happens on Wayland and when both GPUs are connected.
To rule out other possibilities (such as extensions), I installed a fresh copy of my daily driver distro (Arch) without any 'extra' GNOME packages (just followed the guide, installed ```gnome-shell```, ```gdm``` and their dependencies and booted), and issue persisted. Also tried booting from a Fedora 33 live USB.
The issue continued to happen in both cases - again only on Wayland, and again only when both GPUs were connected.
I'm attaching:
- the output for ```lshw``` for a quick snapshot of my system; and
- the output for ```sudo journalctl -f``` when opening a video in VLC on XOrg and when I open the same video on Wayland (again, it's not just VLC, and sometimes it won't happen with VLC either, but I found it often happens with it)
I spoke to a GNOME developer and he found these particular lines suspicious:
**nov 19 09:40:31 dmaciel-arch gnome-shell[14527]: clutter_actor_add_child: assertion 'child->priv->parent == NULL' failed**
**nov 19 09:40:31 dmaciel-arch gnome-shell[14527]: clutter_actor_add_child: assertion 'child->priv->parent == NULL' failed**
**nov 19 09:40:31 dmaciel-arch gnome-shell[14527]: clutter_actor_add_child: assertion 'child->priv->parent == NULL' failed**
It's the only three lines I have found to consistently appear when the error happens.
Apologies in advance if this is not the right place to post this, but since the error mentions clutter I thought this might be the best place to start.
[journalctl_on_Wayland](/uploads/938645a666f91dfff1bbcfa25df894ec/journalctl_on_Wayland)
[journalctl_on_XOrg](/uploads/ddd81c13a8c5c1f755ccf2efc165129d/journalctl_on_XOrg)
[System_config](/uploads/a2c23e93bae8b3cfeceed7a4f9158686/System_config)
Let me know if there's anything I should try to troubleshoot this.
Best,
Danielhttps://gitlab.gnome.org/Archive/clutter/-/issues/19Crash on shellwm.completed_size_change when maximizing window at it's launch2020-09-27T10:14:02ZPapyElGringoCrash on shellwm.completed_size_change when maximizing window at it's launchIn Material Shell we do maximize some windows when they are opened in a maximized layout. And unfortunately in some cases it's cause Shell crashes.
Here the stacktrace
```
Sep 27 00:55:55 localhost.localdomain gnome-shell[11007]: **
Sep...In Material Shell we do maximize some windows when they are opened in a maximized layout. And unfortunately in some cases it's cause Shell crashes.
Here the stacktrace
```
Sep 27 00:55:55 localhost.localdomain gnome-shell[11007]: **
Sep 27 00:55:55 localhost.localdomain gnome-shell[11007]: Clutter:ERROR:../clutter/clutter/clutter-stage.c:1682:_clutter_stage_do_pick_on_view: assertion failed: (context->pick_mode == CLUTTER_PICK_NONE)
Sep 27 00:55:55 localhost.localdomain gnome-shell[11007]: Bail out! Clutter:ERROR:../clutter/clutter/clutter-stage.c:1682:_clutter_stage_do_pick_on_view: assertion failed: (context->pick_mode == CLUTTER_PICK_NONE)
Sep 27 00:55:55 localhost.localdomain gnome-shell[11007]: == Stack trace for context 0x55a7a7d28170 ==
Sep 27 00:55:55 localhost.localdomain gnome-shell[11007]: #0 55a7ab945d78 i resource:///org/gnome/shell/ui/windowManager.js:1283 (32a73fa645b0 @ 87)
Sep 27 00:55:55 localhost.localdomain gnome-shell[11007]: #1 7ffd630f9490 b self-hosted:1017 (32a73fa9e970 @ 589)
Sep 27 00:55:55 localhost.localdomain gnome-shell[11007]: #2 7ffd630fac10 b /var/home/papyelgringo/.local/share/gnome-shell/extensions/material-shell@papyelgringo/src/layout/msWorkspace/msWindow.js:340 (171a2eaa2ad8 @ 1238)
Sep 27 00:55:55 localhost.localdomain gnome-shell[11007]: #3 7ffd630facc0 b /var/home/papyelgringo/.local/share/gnome-shell/extensions/material-shell@papyelgringo/src/layout/msWorkspace/tilingLayouts/baseTiling.js:132 (171a2eab3d30 @ 172)
Sep 27 00:55:55 localhost.localdomain gnome-shell[11007]: #4 7ffd630fad20 I self-hosted:266 (1438a5aace20 @ 259)
Sep 27 00:55:55 localhost.localdomain gnome-shell[11007]: #5 7ffd630fade0 b /var/home/papyelgringo/.local/share/gnome-shell/extensions/material-shell@papyelgringo/src/layout/msWorkspace/tilingLayouts/baseTiling.js:123 (171a2eab3cb8 @ 96)
Sep 27 00:55:55 localhost.localdomain gnome-shell[11007]: #6 7ffd630faea0 b /var/home/papyelgringo/.local/share/gnome-shell/extensions/material-shell@papyelgringo/src/layout/msWorkspace/tilingLayouts/baseTiling.js:346 (171a2eab5628 @ 24)
Sep 27 00:55:55 localhost.localdomain gnome-shell[11007]: #7 7ffd630fc400 b /var/home/papyelgringo/.local/share/gnome-shell/extensions/material-shell@papyelgringo/src/utils/compatibility.js:19 (171a2eaa3f10 @ 78)
Sep 27 00:55:55 localhost.localdomain gnome-shell[11007]: #8 7ffd630fc500 b /var/home/papyelgringo/.local/share/gnome-shell/extensions/material-shell@papyelgringo/src/layout/msWorkspace/msWorkspace.js:502 (171a2eadabc8 @ 464)
Sep 27 00:55:55 localhost.localdomain gnome-shell[11007]: #9 7ffd630fd9e0 b /var/home/papyelgringo/.local/share/gnome-shell/extensions/material-shell@papyelgringo/src/utils/compatibility.js:19 (171a2eaa3f10 @ 78)
Sep 27 00:55:55 localhost.localdomain gnome-shell[11007]: #10 7ffd630fdac0 b /var/home/papyelgringo/.local/share/gnome-shell/extensions/material-shell@papyelgringo/src/layout/main.js:490 (491f5279f88 @ 28)
Sep 27 00:55:55 localhost.localdomain gnome-shell[11007]: #11 7ffd630fdb20 I self-hosted:266 (1438a5aace20 @ 259)
Sep 27 00:55:55 localhost.localdomain gnome-shell[11007]: #12 7ffd630fdbf0 b /var/home/papyelgringo/.local/share/gnome-shell/extensions/material-shell@papyelgringo/src/layout/main.js:489 (491f5279e98 @ 548)
Sep 27 00:55:55 localhost.localdomain gnome-shell[11007]: #13 55a7ab945ce8 i /var/home/papyelgringo/.local/share/gnome-shell/extensions/material-shell@papyelgringo/src/layout/msWorkspace/msWindow.js:386 (171a2eaa2b50 @ 32)
```
`msWindow.js:340`
```
this._metaWindow.maximize(Meta.MaximizeFlags.BOTH);
```
and
`windowManager.js:1283`
```
shellwm.completed_size_change(actor);
```
I have no idea how I could prevent this crash. If you have some idea of some window condition I could check in order to now if it's will crash or not to prevent or at least to provide a workaround.
Thankshttps://gitlab.gnome.org/Archive/clutter/-/issues/18Firefox wayland UI rendering freeze on video playback, CLUTTER_PAINT=continuo...2020-11-02T23:17:13ZTörök EdwinFirefox wayland UI rendering freeze on video playback, CLUTTER_PAINT=continuous-redraw works around the problemSee https://bugzilla.mozilla.org/show_bug.cgi?id=1653850#c23 I think this is a clutter bug, because setting CLUTTER_PAINT=continuous-redraw makes the problem go away.
See https://bugzilla.mozilla.org/show_bug.cgi?id=1653850#c22 for steps...See https://bugzilla.mozilla.org/show_bug.cgi?id=1653850#c23 I think this is a clutter bug, because setting CLUTTER_PAINT=continuous-redraw makes the problem go away.
See https://bugzilla.mozilla.org/show_bug.cgi?id=1653850#c22 for steps to reproduce (hover mouse over video playback on the linked site in the comment) on Fedora 32.
clutter-1.26.4-1.fc32.x86_64
Is there any more debug info I could collect when the issue is happening to track down where the bug is?
WAYLAND_DEBUG=1 on firefox-wayland didn't seem to yield anything particularly different when the bug occured or not.https://gitlab.gnome.org/Archive/clutter/-/issues/17wl_surface_get_user_data() is called with a NULL argument2020-03-20T18:39:58ZДилян Палаузовgit-dpa@aegee.orgwl_surface_get_user_data() is called with a NULL argumenthttps://gitlab.freedesktop.org/wayland/wayland/issues/152 `wl_surface_get_user_data()` is called with a NULL argument, which is a a clutter bug.
Originating from https://gitlab.gnome.org/GNOME/evolution/issues/844.https://gitlab.freedesktop.org/wayland/wayland/issues/152 `wl_surface_get_user_data()` is called with a NULL argument, which is a a clutter bug.
Originating from https://gitlab.gnome.org/GNOME/evolution/issues/844.https://gitlab.gnome.org/Archive/clutter/-/issues/16Totem has problems with AMD cards (clutter does not support HDR colors /rgb10/)2019-12-17T17:12:09ZLukas RuzickaTotem has problems with AMD cards (clutter does not support HDR colors /rgb10/)When you try to run **Gnome Maps** on a computer using an AMD graphic card, the application starts but is unable to create a main window. The problem was discussed in this bug here https://bugzilla.redhat.com/show_bug.cgi?id=1560481, whe...When you try to run **Gnome Maps** on a computer using an AMD graphic card, the application starts but is unable to create a main window. The problem was discussed in this bug here https://bugzilla.redhat.com/show_bug.cgi?id=1560481, where you can find more info.
To highlight at least some if the findings. It has been identified, that the AMD cards now support **HDR colours** (rgb10) which causes some application to behave in a weird way. The problem has been located to **clutter** (Comment 26 of the RHBZ) and a temporary solution was proposed in Comment 33 detto. The solution worked and the support could be switched **off**. After that, Totem is working without issues.
In one of the meetings, Matthias Clasen stated: "*... the only clutter we care about is the one inside mutter. Anything else using clutter is living on borrowed time.*"
However, we would like to support these features (HDR colours) in Fedora 29 and applications, such as Maps, should be ready for this step.https://gitlab.gnome.org/Archive/clutter/-/issues/15Segfault in Jami + Wayland due to clutter2022-08-25T15:46:08ZSébastien BlinSegfault in Jami + Wayland due to clutterHi!
I am currently trying to remove that line in the Jami (gnome client) source code:
```cpp
setenv("GDK_BACKEND", "x11", true); // workaround for Wayland
```
Everything is working nicely... unless displaying video (sad for a video co...Hi!
I am currently trying to remove that line in the Jami (gnome client) source code:
```cpp
setenv("GDK_BACKEND", "x11", true); // workaround for Wayland
```
Everything is working nicely... unless displaying video (sad for a video conf soft).
This is the backtrace I got
```
#0 0x00007ffff1922d37 in __memmove_avx_unaligned_erms () at /lib64/libc.so.6
#1 0x00007fffe621f908 in brw_upload_indices () at /usr/lib64/dri/i965_dri.so
#2 0x00007fffe622f231 in brw_upload_render_state () at /usr/lib64/dri/i965_dri.so
#3 0x00007fffe621eb74 in brw_draw_prims () at /usr/lib64/dri/i965_dri.so
#4 0x00007fffe64be303 in _mesa_validated_drawrangeelements () at /usr/lib64/dri/i965_dri.so
#5 0x00007fffe64be61c in _mesa_DrawElements () at /usr/lib64/dri/i965_dri.so
#6 0x00007ffff6844c8d in _cogl_framebuffer_gl_draw_indexed_attributes ()
at /lib64/libcogl.so.20
#7 0x00007ffff6888685 in _cogl_journal_flush_modelview_and_entries () at /lib64/libcogl.so.20
#8 0x00007ffff6888b0f in batch_and_call.part () at /lib64/libcogl.so.20
#9 0x00007ffff6889139 in _cogl_journal_flush_texcoord_vbo_offsets_and_entries ()
at /lib64/libcogl.so.20
#10 0x00007ffff6888dbf in _cogl_journal_flush_vbo_offsets_and_entries ()
at /lib64/libcogl.so.20
#11 0x00007ffff688a172 in _cogl_journal_flush () at /lib64/libcogl.so.20
#12 0x00007ffff68586c8 in cogl_flush () at /lib64/libcogl.so.20
#13 0x00007ffff688f022 in cogl_onscreen_swap_buffers_with_damage () at /lib64/libcogl.so.20
#14 0x00007ffff694def6 in clutter_stage_cogl_redraw () at /lib64/libclutter-1.0.so.0
#15 0x00007ffff69512df in clutter_stage_gdk_redraw () at /lib64/libclutter-1.0.so.0
#16 0x00007ffff69beee0 in _clutter_stage_do_update () at /lib64/libclutter-1.0.so.0
#17 0x00007ffff6950b7c in clutter_master_clock_gdk_update () at /lib64/libclutter-1.0.so.0
#18 0x00007ffff70cd742 in g_closure_invoke () at /lib64/libgobject-2.0.so.0
#19 0x00007ffff70e1604 in signal_emit_unlocked_R () at /lib64/libgobject-2.0.so.0
#20 0x00007ffff70ea3ae in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#21 0x00007ffff70ea9d3 in g_signal_emit () at /lib64/libgobject-2.0.so.0
#22 0x00007ffff7614cc3 in gdk_frame_clock_paint_idle () at /lib64/libgdk-3.so.0
#23 0x00007ffff75fef3d in gdk_threads_dispatch () at /lib64/libgdk-3.so.0
#24 0x00007ffff6fe1fb1 in g_timeout_dispatch () at /lib64/libglib-2.0.so.0
#25 0x00007ffff6fe14a0 in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#26 0x00007ffff6fe1830 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#27 0x00007ffff6fe18d3 in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#28 0x00007ffff71f5c75 in g_application_run () at /lib64/libgio-2.0.so.0
```
Sure, I use i965 on that desktop. On another desktop:
```
#0 0x00007ffff1a4c667 in __memmove_avx_unaligned_erms () at /lib64/libc.so.6
#1 0x00007fffe603f958 in u_upload_data () at /usr/lib64/dri/radeonsi_dri.so
#2 0x00007fffe68b2e43 in tc_draw_vbo () at /usr/lib64/dri/radeonsi_dri.so
#3 0x00007fffe6534490 in st_draw_vbo () at /usr/lib64/dri/radeonsi_dri.so
#4 0x00007fffe65d2c43 in _mesa_validated_drawrangeelements () at /usr/lib64/dri/radeonsi_dri.so
#5 0x00007fffe65d2f5c in _mesa_DrawElements () at /usr/lib64/dri/radeonsi_dri.so
#6 0x00007ffff694dcad in () at /lib64/libcogl.so.20
#7 0x00007ffff69914c5 in () at /lib64/libcogl.so.20
#8 0x00007ffff699194f in () at /lib64/libcogl.so.20
#9 0x00007ffff6991f79 in () at /lib64/libcogl.so.20
#10 0x00007ffff6991bff in () at /lib64/libcogl.so.20
#11 0x00007ffff6992fa2 in () at /lib64/libcogl.so.20
#12 0x00007ffff6961738 in cogl_flush () at /lib64/libcogl.so.20
#13 0x00007ffff6997e02 in cogl_onscreen_swap_buffers_with_damage () at /lib64/libcogl.so.20
#14 0x00007ffff6a56f16 in () at /lib64/libclutter-1.0.so.0
#15 0x00007ffff6a5a30f in () at /lib64/libclutter-1.0.so.0
#16 0x00007ffff6ac7df0 in () at /lib64/libclutter-1.0.so.0
#17 0x00007ffff6a59bac in () at /lib64/libclutter-1.0.so.0
#18 0x00007ffff71d2742 in g_closure_invoke () at /lib64/libgobject-2.0.so.0
```
If I search for similar issues, results seems related to drivers. But here it's not, I tested on ~10 devices, and it's perfectly working on X11 or with XDG_BACKEND set to x11.
For now I don't have any clue or any idea about what is going on. However, this part is causing that backtrace
```cpp
auto stage = gtk_clutter_embed_get_stage(GTK_CLUTTER_EMBED(widgets->video_widget));
auto actor_info = gtk_clutter_actor_new_with_contents(widgets->hbox_call_info);
auto actor_controls = gtk_clutter_actor_new_with_contents(widgets->hbox_call_controls);
auto actor_smartInfo = gtk_clutter_actor_new_with_contents(widgets->vbox_call_smartInfo);
clutter_actor_add_child(stage, actor_info);
```
Any clue is appreciated.
Have a nice day,https://gitlab.gnome.org/Archive/clutter/-/issues/14Clutter.BoxLayout homogeneous doesn't resize right2019-11-17T19:14:38ZRastersoftClutter.BoxLayout homogeneous doesn't resize rightI'm not sure if this bug belongs to Clutter or to St.
When creating an St.Widget with a Clutter.BoxLayout as layout_manager with "homogeneous" property set, the minimum size of the elements isn't taken into account, but only the minimum...I'm not sure if this bug belongs to Clutter or to St.
When creating an St.Widget with a Clutter.BoxLayout as layout_manager with "homogeneous" property set, the minimum size of the elements isn't taken into account, but only the minimum size of external elements. An example is the "Dialog" class in Gnome Shell, where the width is determined by the external label, and not the content of the buttons inside the BoxLayout. This means that, if the text in a button is too wide, it will be cut (which can be problematic with translations).
An example: this is what happens when creating a ModalDialog (that relies on Dialog) with four buttons, and one has a very wide text:
![buttons_wrong](/uploads/14b1ca6a7f87512f563abbc7a037dfdb/buttons_wrong.png)
The expected (in my opinion) behavior, is that the container must be resized to ensure that all the elements in the container will fit, while keeping the same width for all. Something like this (which I achieved by listening to the "allocation-changed" signal in each contained element and adjusting the width of all of them to the maximum value):
![buttons_right](/uploads/33b42fdaf8986cafbfff263c7208e056/buttons_right.png)
Someone commented me that it was possibly the intended behavior, because the code is the same than in GTK; but in GTK it works as I expect (I did a quick test):
![Captura_de_pantalla_de_2019-11-17_17-58-50](/uploads/e05affc7b7679fac263ecafa2f6e0a5a/Captura_de_pantalla_de_2019-11-17_17-58-50.png)https://gitlab.gnome.org/Archive/clutter/-/issues/13DeviceManager.get_core_device(InputDeviceType.KEYBOARD_DEVICE) returns null a...2019-11-04T05:50:44ZTim CuthbertsonDeviceManager.get_core_device(InputDeviceType.KEYBOARD_DEVICE) returns null after hotplugThis was originally reported against mutter: https://gitlab.gnome.org/GNOME/mutter/issues/799
But I think it's likely a clutter bug.This was originally reported against mutter: https://gitlab.gnome.org/GNOME/mutter/issues/799
But I think it's likely a clutter bug.https://gitlab.gnome.org/Archive/clutter/-/issues/12Resize of text entry box2019-10-19T16:14:27ZGhost UserResize of text entry boxHello!
Since GNOME 3.34 the first character I type into the password field of GDM resizes the entry and makes it a tiny bit higher. The same happens inside GNOME-Shell, when I use *Alt+F2* or when Seahorse asks for a password. If I'm r...Hello!
Since GNOME 3.34 the first character I type into the password field of GDM resizes the entry and makes it a tiny bit higher. The same happens inside GNOME-Shell, when I use *Alt+F2* or when Seahorse asks for a password. If I'm right, all this are provided by Clutter and not Gtk? Clutter didn't received any update for long time, so I don't know what causes this actually. My next suspect would be PANGO.
![Screenshot_from_2019-10-19_17-45-44](/uploads/62091b7e7bb5a6daf0fb7d04d3d2b900/Screenshot_from_2019-10-19_17-45-44.png)![Screenshot_from_2019-10-19_17-45-51](/uploads/59c83295d4665041a0399d3721d011ca/Screenshot_from_2019-10-19_17-45-51.png)
I'm aware that it is barely noticeable (I suggest GIMP to compare the high of the entry field), but during interactive usage you recognize it immediately. I'm using Archlinux with Wayland, it happens also with X11, on a ThinkPad X220 and a ThinkPad T420 with Intel SandyBridge/HD3000 and xf86-video-intel.
Thank youhttps://gitlab.gnome.org/Archive/clutter/-/issues/11Handle 10 bits colour bit depth in actor picking2020-01-24T14:13:49ZFloris Van den AbeeleHandle 10 bits colour bit depth in actor pickingCurrently it appears clutter assumes the channel depth of picking frame buffer to be fixed at 8 bits. However, this isn't necessarily the case on modern systems. For example: in the open source AMD driver under Wayland, cogl reports a pi...Currently it appears clutter assumes the channel depth of picking frame buffer to be fixed at 8 bits. However, this isn't necessarily the case on modern systems. For example: in the open source AMD driver under Wayland, cogl reports a pixel format of 1010102, i.e. 10 bpc for the RGB channels. In clutter, this leads to the the actor id being incorrectly encoded into the color channels of the actor's pixel in the picking frame buffer. This breaks picking functionality for users with 10 bpc hardware, the result is that applications such as gnome-maps, totem and cheese do not process mouse input. Which has been reported in various issues:
* https://gitlab.gnome.org/GNOME/gnome-maps/issues/129#note_596967
* https://bugzilla.redhat.com/show_bug.cgi?id=1560481
* https://gitlab.gnome.org/GNOME/clutter-gtk/issues/2
One current work around for packagers seems to be to disable 10bpc support in mesa all together, see https://bugzilla.redhat.com/show_bug.cgi?id=1560481#c52. However not all distros enforce this (Arch doesn't for example).
Rather than forcing downstream users to disable 10 bpc support, clutter should handle 10 bpc frame buffers for its picking functionally.https://gitlab.gnome.org/Archive/clutter/-/issues/10Change the https://www.clutter-project.org...2019-10-01T08:40:00ZJhonsonChange the https://www.clutter-project.org...Changing the url https://www.clutter-project.org to http://www.clutter-project.org, the certificate is causing issue.Changing the url https://www.clutter-project.org to http://www.clutter-project.org, the certificate is causing issue.https://gitlab.gnome.org/Archive/clutter/-/issues/9Use-after-free in actor-layout test2022-08-25T15:49:00ZSimon McVittieUse-after-free in actor-layout testThe actor-layout test intermittently crashes for me. Valgrind says there's a use-after-free:
```
==16487== Invalid read of size 8
==16487== at 0x4A03DE4: clutter_master_clock_gdk_update (clutter-master-clock-gdk.c:282)
==16487== b...The actor-layout test intermittently crashes for me. Valgrind says there's a use-after-free:
```
==16487== Invalid read of size 8
==16487== at 0x4A03DE4: clutter_master_clock_gdk_update (clutter-master-clock-gdk.c:282)
==16487== by 0x4978EB1: g_closure_invoke (gclosure.c:810)
==16487== by 0x498C3B3: signal_emit_unlocked_R (gsignal.c:3635)
==16487== by 0x499510E: g_signal_emit_valist (gsignal.c:3391)
==16487== by 0x499579E: g_signal_emit (gsignal.c:3447)
==16487== by 0x50C517A: gdk_frame_clock_paint_idle (gdkframeclockidle.c:450)
==16487== by 0x50AFD27: gdk_threads_dispatch (gdk.c:777)
==16487== by 0x4893293: g_timeout_dispatch (gmain.c:4678)
==16487== by 0x48927EE: g_main_dispatch (gmain.c:3189)
==16487== by 0x48927EE: g_main_context_dispatch (gmain.c:3854)
==16487== by 0x4892BBF: g_main_context_iterate.isra.0 (gmain.c:3927)
==16487== by 0x4892C4E: g_main_context_iteration (gmain.c:3988)
==16487== by 0x4A6FC13: clutter_test_check_actor_at_point (clutter-test-utils.c:385)
==16487== Address 0xe436b68 is 8 bytes inside a block of size 24 free'd
==16487== at 0x48369AB: free (vg_replace_malloc.c:540)
==16487== by 0x48B0CF9: g_slice_free_chain_with_offset (gslice.c:1231)
==16487== by 0x4978EB1: g_closure_invoke (gclosure.c:810)
==16487== by 0x498C3B3: signal_emit_unlocked_R (gsignal.c:3635)
==16487== by 0x499510E: g_signal_emit_valist (gsignal.c:3391)
==16487== by 0x499579E: g_signal_emit (gsignal.c:3447)
==16487== by 0x497D533: g_object_dispatch_properties_changed (gobject.c:1088)
==16487== by 0x497CE1D: g_object_notify_queue_thaw (gobject.c:296)
==16487== by 0x497FB0A: g_object_thaw_notify (gobject.c:1325)
==16487== by 0x4A6F7A7: validate_stage (clutter-test-utils.c:311)
==16487== by 0x4A54611: _clutter_run_repaint_functions (clutter-main.c:3449)
==16487== by 0x4A03DA5: master_clock_update_stage (clutter-master-clock-gdk.c:251)
==16487== by 0x4A03DA5: clutter_master_clock_gdk_update (clutter-master-clock-gdk.c:306)
==16487== Block was alloc'd at
==16487== at 0x483577F: malloc (vg_replace_malloc.c:309)
==16487== by 0x48983F8: g_malloc (gmem.c:99)
==16487== by 0x48B00E1: g_slice_alloc (gslice.c:1024)
==16487== by 0x488EA83: g_list_append (glist.c:264)
==16487== by 0x4A03A54: clutter_master_clock_gdk_add_stage_clock (clutter-master-clock-gdk.c:378)
==16487== by 0x4A03A54: clutter_master_clock_gdk_listen_to_stage (clutter-master-clock-gdk.c:425)
==16487== by 0x4A03A54: clutter_master_clock_gdk_stage_visibility (clutter-master-clock-gdk.c:435)
==16487== by 0x4A03B8D: clutter_master_clock_gdk_init (clutter-master-clock-gdk.c:523)
==16487== by 0x499BDEC: g_type_create_instance (gtype.c:1864)
==16487== by 0x497E70C: g_object_new_internal (gobject.c:1805)
==16487== by 0x497FE1C: g_object_new_with_properties (gobject.c:1973)
==16487== by 0x4980870: g_object_new (gobject.c:1645)
==16487== by 0x4A54E0A: _clutter_master_clock_get_default (clutter-master-clock.c:69)
==16487== by 0x4A6C264: _clutter_stage_queue_event (clutter-stage.c:923)
```https://gitlab.gnome.org/Archive/clutter/-/issues/8actor-offscreen-redirect test has uninitialized stack data, hangs when the ob...2019-08-21T17:20:52ZSimon McVittieactor-offscreen-redirect test has uninitialized stack data, hangs when the obvious fix is appliedRunning the actor-offscreen-redirect test under valgrind indicates a use of uninitialized data:
```
$ xvfb-run -a env GDK_BACKEND=x11 valgrind /usr/lib/x86_64-linux-gnu/installed-tests/clutter/actor-offscreen-redirect --tap
# Start ...Running the actor-offscreen-redirect test under valgrind indicates a use of uninitialized data:
```
$ xvfb-run -a env GDK_BACKEND=x11 valgrind /usr/lib/x86_64-linux-gnu/installed-tests/clutter/actor-offscreen-redirect --tap
# Start of actor tests
# Start of offscreen tests
==13864== Conditional jump or move depends on uninitialised value(s)
==13864== at 0x10AD7C: actor_offscreen_redirect (actor-offscreen-redirect.c:331)
==13864== by 0x10AD7C: actor_offscreen_redirect (actor-offscreen-redirect.c:299)
==13864== by 0x492F889: clutter_test_func_wrapper (clutter-test-utils.c:138)
==13864== by 0x4B6F3BD: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6000.6)
```
This is the variable 'data' here:
```
static void
actor_offscreen_redirect (void)
{
Data data;
... data.was_painted is never initialized ...
while (!data.was_painted)
g_main_context_iteration (NULL, FALSE);
}
```
It seems that data.was_painted was intended to be initialized to FALSE (all-zeroes), but this never actually happened. If the uninitialized value of data.was_painted happens to be nonzero, this results in basically the entire test being skipped - we never enter the main loop, and never have the opportunity for the test to hang while waiting for a paint signal that will never happen.
Adding some debug code to hexdump the contents of the data struct reveals that gcc-9 -O1, or gcc-9 -O2 with -fno-tree-pre, fairly reliably fills data.was_painted with a nonzero value, so most of the test is effectively never run. gcc-9 -O2 fills it with zeroes, so the test runs.
After applying the obvious fix
```
- Data data;
+ Data data = {};
```
or when compiling with gcc-9 -O2, the paint signal never happens (at least in my testing) and the test hangs. With [a quick hack to add some more debug messages](/uploads/e6960c8468522678408315c997530b0f/actor-offscreen-redirect.diff) I get:
```
# random seed: R02S7604fa56ae42aabac603dcf767c6b987
1..1
# Start of actor tests
# Start of offscreen tests
# Clutter-Conform-DEBUG: in run_verify
# Clutter-Conform-DEBUG: in verify_redraw
# Clutter-Conform-DEBUG: queueing redraw
# Clutter-Conform-DEBUG: running main loop
(time passes, test does not terminate)
```https://gitlab.gnome.org/Archive/clutter/-/issues/7ClutterTransitionGroup and ClutterKeyframeTransition don't play well together2022-08-25T15:46:48ZRyan HendricksonClutterTransitionGroup and ClutterKeyframeTransition don't play well togetherI'd like to animate a dynamic set of actors driven by one timeline, such that they all animate in sync with each other. I thought that `ClutterTransitionGroup` would be ideal for this, but adding and removing `ClutterKeyframeTransition`s...I'd like to animate a dynamic set of actors driven by one timeline, such that they all animate in sync with each other. I thought that `ClutterTransitionGroup` would be ideal for this, but adding and removing `ClutterKeyframeTransition`s from the group goes very poorly. It seems there's some extra state being maintained in `ClutterKeyframeTransition` that `ClutterTransitionGroup` doesn't update when it forces an advance, which causes the animations to wildly deviate from their expected paths.
Here's the closest I've come to getting this to work; it contains two workarounds (commented) that I'm not sure ought to be necessary, and even with those the animation doesn't quite behave correctly—when the actors join the animation, you can often see them rapidly rotate much farther than the keyframes should allow them to.
Am I doing this wrong? Are these objects somehow not intended to be used with each other in this way? Or are these all actual bugs?
```c
#include <clutter/clutter.h>
#define BOX_COUNT 5
static ClutterTransition *group;
static ClutterTransition *shakes[BOX_COUNT];
static gboolean is_shake_on[BOX_COUNT];
gboolean
toggle_transition(gpointer data) {
gsize i = (gsize)data;
is_shake_on[i] = !is_shake_on[i];
if (is_shake_on[i]) {
clutter_transition_group_add_transition(CLUTTER_TRANSITION_GROUP(group), shakes[i]);
/* Without this, the animations don't sync up (is this intentional or a bug?)
*/
clutter_timeline_advance(CLUTTER_TIMELINE(shakes[i]), clutter_timeline_get_elapsed_time(CLUTTER_TIMELINE(group)));
/* Without this, Clutter-CRITICAL "assertion 'CLUTTER_IS_INTERVAL (interval)' failed"
* spam and animations break (surely this is a bug?)
*/
g_signal_emit_by_name(shakes[i], "started");
} else {
clutter_transition_group_remove_transition(CLUTTER_TRANSITION_GROUP(group), shakes[i]);
}
g_timeout_add(2000, toggle_transition, (gpointer)i);
return FALSE;
}
int
main(int argc, char *argv[])
{
ClutterActor *stage, *rect;
ClutterTransition *shake;
gfloat stage_width, stage_height;
GError *error = NULL;
gsize i;
if (clutter_init_with_args(&argc, &argv, NULL, NULL, NULL, &error) != CLUTTER_INIT_SUCCESS) {
return 1;
}
stage = clutter_stage_new();
clutter_actor_set_background_color(stage, CLUTTER_COLOR_Black);
g_signal_connect(stage, "destroy", G_CALLBACK(clutter_main_quit), NULL);
clutter_actor_get_size(stage, &stage_width, &stage_height);
group = clutter_transition_group_new();
for (i = 0; i < BOX_COUNT; i++) {
rect = clutter_actor_new();
clutter_actor_set_width(rect, 32);
clutter_actor_set_height(rect, 32);
clutter_actor_set_background_color(rect, CLUTTER_COLOR_White);
clutter_actor_add_child(stage, rect);
clutter_actor_set_position(rect, stage_width / 2 - 16 + 48 * ((gint)i - (BOX_COUNT - 1) / 2), stage_height / 2 - 16);
clutter_actor_set_pivot_point(rect, 0.5, 0.5);
shake = clutter_keyframe_transition_new("rotation-angle-z");
clutter_transition_set_from(shake, G_TYPE_DOUBLE, 0);
clutter_transition_set_to(shake, G_TYPE_DOUBLE, 0);
clutter_timeline_set_duration(CLUTTER_TIMELINE(shake), 2000);
clutter_keyframe_transition_set(CLUTTER_KEYFRAME_TRANSITION(shake),
G_TYPE_DOUBLE,
5,
0.05, 8.0, CLUTTER_EASE_OUT_QUAD,
0.15, -8.0, CLUTTER_EASE_IN_OUT_QUAD,
0.25, 8.0, CLUTTER_EASE_IN_OUT_QUAD,
0.35, -8.0, CLUTTER_EASE_IN_OUT_QUAD,
0.40, 0.0, CLUTTER_EASE_IN_QUAD);
clutter_transition_set_animatable(shake, CLUTTER_ANIMATABLE(rect));
shakes[i] = shake;
is_shake_on[i] = FALSE;
g_timeout_add(i * 500, toggle_transition, (gpointer)i);
}
clutter_timeline_set_duration(CLUTTER_TIMELINE(group), 2000);
clutter_timeline_set_repeat_count(CLUTTER_TIMELINE(group), -1);
clutter_timeline_start(CLUTTER_TIMELINE(group));
clutter_actor_show(stage);
clutter_main();
return EXIT_SUCCESS;
}
```https://gitlab.gnome.org/Archive/clutter/-/issues/61.26.2: multiple tests are hangs test suite2022-08-25T15:46:26ZTomasz Kłoczko1.26.2: multiple tests are hangs test suiteLooks like actor-layout test hangs test suite.
<pre>tkloczko 46798 0.0 0.0 2776 1952 pts/8 S+ 19:26 0:00 \_ /usr/bin/make -O -j 48 check -j1
tkloczko 46799 0.0 0.0 3860 3228 pts/8 S+ 19...Looks like actor-layout test hangs test suite.
<pre>tkloczko 46798 0.0 0.0 2776 1952 pts/8 S+ 19:26 0:00 \_ /usr/bin/make -O -j 48 check -j1
tkloczko 46799 0.0 0.0 3860 3228 pts/8 S+ 19:26 0:00 \_ /bin/sh -c fail=; \ if (target_option=k; case ${target_option-} in ?) ;; *) echo "am__make_running_with_option: internal error: invalid" "target option '${target_option-}' specified" >&2; exit 1;; esac; has_opt=no; sane_makeflags=$MAKEFLAGS; if { if test -z '0'; then false; elif test -n 'x86_64-redhat-linux-gnu'; then true; elif test -n '4.2.1' && test -n '/home/tkloczko/rpmbuild/BUILD/clutter-1.26.2'; then true; else false; fi; }; then sane_makeflags=$MFLAGS; else case $MAKEFLAGS in *\\[\ \?]*) bs=\\; sane_makeflags=`printf '%s\n' "$MAKEFLAGS" | sed "s/$bs$bs[$bs $bs?]*//g"`;; esac; fi; skip_next=no; strip_trailopt () { flg=`printf '%s\n' "$flg" | sed "s/$1.*$//"`; }; for flg in $sane_makeflags; do test $skip_next = yes && { skip_next=no; continue; }; case $flg in *=*|--*) continue;; -*I) strip_trailopt 'I'; skip_next=yes;; -*I?*) strip_trailopt 'I';; -*O) strip_trailopt 'O'; skip_next=yes;; -*O?*) strip_trailopt 'O';; -*l) strip_trailopt 'l'; skip_next=yes;; -*l?*) strip_trailopt 'l';; -[dEDm]) skip_next=yes;; -[JT]) skip_next=yes;; esac; case $flg in *$target_option*) has_opt=yes; break;; esac; done; test $has_opt = yes); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo check-recursive | sed s/-recursive//`; \ case "check-recursive" in \ distclean-* | maintainer-clean-*) list='clutter tests examples doc po build' ;; \ *) list='build clutter tests doc po examples' ;; \ esac; \ for subdir in $list; do \ echo "Making $target in $subdir"; \ if test "$subdir" = "."; then \ dot_seen=yes; \ local_target="$target-am"; \ else \ local_target="$target"; \ fi; \ (CDPATH="${ZSH_VERSION+.}:" && cd $subdir && /usr/bin/make $local_target) \ || eval $failcom; \ done; \ if test "$dot_seen" = "no"; then \ /usr/bin/make "$target-am" || exit 1; \ fi; test -z "$fail"
tkloczko 46846 0.0 0.0 3860 1812 pts/8 S+ 19:26 0:00 \_ /bin/sh -c fail=; \ if (target_option=k; case ${target_option-} in ?) ;; *) echo "am__make_running_with_option: internal error: invalid" "target option '${target_option-}' specified" >&2; exit 1;; esac; has_opt=no; sane_makeflags=$MAKEFLAGS; if { if test -z '0'; then false; elif test -n 'x86_64-redhat-linux-gnu'; then true; elif test -n '4.2.1' && test -n '/home/tkloczko/rpmbuild/BUILD/clutter-1.26.2'; then true; else false; fi; }; then sane_makeflags=$MFLAGS; else case $MAKEFLAGS in *\\[\ \?]*) bs=\\; sane_makeflags=`printf '%s\n' "$MAKEFLAGS" | sed "s/$bs$bs[$bs $bs?]*//g"`;; esac; fi; skip_next=no; strip_trailopt () { flg=`printf '%s\n' "$flg" | sed "s/$1.*$//"`; }; for flg in $sane_makeflags; do test $skip_next = yes && { skip_next=no; continue; }; case $flg in *=*|--*) continue;; -*I) strip_trailopt 'I'; skip_next=yes;; -*I?*) strip_trailopt 'I';; -*O) strip_trailopt 'O'; skip_next=yes;; -*O?*) strip_trailopt 'O';; -*l) strip_trailopt 'l'; skip_next=yes;; -*l?*) strip_trailopt 'l';; -[dEDm]) skip_next=yes;; -[JT]) skip_next=yes;; esac; case $flg in *$target_option*) has_opt=yes; break;; esac; done; test $has_opt = yes); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo check-recursive | sed s/-recursive//`; \ case "check-recursive" in \ distclean-* | maintainer-clean-*) list='clutter tests examples doc po build' ;; \ *) list='build clutter tests doc po examples' ;; \ esac; \ for subdir in $list; do \ echo "Making $target in $subdir"; \ if test "$subdir" = "."; then \ dot_seen=yes; \ local_target="$target-am"; \ else \ local_target="$target"; \ fi; \ (CDPATH="${ZSH_VERSION+.}:" && cd $subdir && /usr/bin/make $local_target) \ || eval $failcom; \ done; \ if test "$dot_seen" = "no"; then \ /usr/bin/make "$target-am" || exit 1; \ fi; test -z "$fail"
tkloczko 46847 0.0 0.0 2756 2012 pts/8 S+ 19:26 0:00 \_ /usr/bin/make check
tkloczko 46848 0.0 0.0 3860 3348 pts/8 S+ 19:26 0:00 \_ /bin/sh -c fail=; \ if (target_option=k; case ${target_option-} in ?) ;; *) echo "am__make_running_with_option: internal error: invalid" "target option '${target_option-}' specified" >&2; exit 1;; esac; has_opt=no; sane_makeflags=$MAKEFLAGS; if { if test -z '1'; then false; elif test -n 'x86_64-redhat-linux-gnu'; then true; elif test -n '4.2.1' && test -n '/home/tkloczko/rpmbuild/BUILD/clutter-1.26.2/tests'; then true; else false; fi; }; then sane_makeflags=$MFLAGS; else case $MAKEFLAGS in *\\[\ \?]*) bs=\\; sane_makeflags=`printf '%s\n' "$MAKEFLAGS" | sed "s/$bs$bs[$bs $bs?]*//g"`;; esac; fi; skip_next=no; strip_trailopt () { flg=`printf '%s\n' "$flg" | sed "s/$1.*$//"`; }; for flg in $sane_makeflags; do test $skip_next = yes && { skip_next=no; continue; }; case $flg in *=*|--*) continue;; -*I) strip_trailopt 'I'; skip_next=yes;; -*I?*) strip_trailopt 'I';; -*O) strip_trailopt 'O'; skip_next=yes;; -*O?*) strip_trailopt 'O';; -*l) strip_trailopt 'l'; skip_next=yes;; -*l?*) strip_trailopt 'l';; -[dEDm]) skip_next=yes;; -[JT]) skip_next=yes;; esac; case $flg in *$target_option*) has_opt=yes; break;; esac; done; test $has_opt = yes); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo check-recursive | sed s/-recursive//`; \ case "check-recursive" in \ distclean-* | maintainer-clean-*) list='accessibility conform interactive micro-bench performance' ;; \ *) list='accessibility conform interactive micro-bench performance' ;; \ esac; \ for subdir in $list; do \ echo "Making $target in $subdir"; \ if test "$subdir" = "."; then \ dot_seen=yes; \ local_target="$target-am"; \ else \ local_target="$target"; \ fi; \ (CDPATH="${ZSH_VERSION+.}:" && cd $subdir && /usr/bin/make $local_target) \ || eval $failcom; \ done; \ if test "$dot_seen" = "no"; then \ /usr/bin/make "$target-am" || exit 1; \ fi; test -z "$fail"
tkloczko 47215 0.0 0.0 3860 1908 pts/8 S+ 19:26 0:00 \_ /bin/sh -c fail=; \ if (target_option=k; case ${target_option-} in ?) ;; *) echo "am__make_running_with_option: internal error: invalid" "target option '${target_option-}' specified" >&2; exit 1;; esac; has_opt=no; sane_makeflags=$MAKEFLAGS; if { if test -z '1'; then false; elif test -n 'x86_64-redhat-linux-gnu'; then true; elif test -n '4.2.1' && test -n '/home/tkloczko/rpmbuild/BUILD/clutter-1.26.2/tests'; then true; else false; fi; }; then sane_makeflags=$MFLAGS; else case $MAKEFLAGS in *\\[\ \?]*) bs=\\; sane_makeflags=`printf '%s\n' "$MAKEFLAGS" | sed "s/$bs$bs[$bs $bs?]*//g"`;; esac; fi; skip_next=no; strip_trailopt () { flg=`printf '%s\n' "$flg" | sed "s/$1.*$//"`; }; for flg in $sane_makeflags; do test $skip_next = yes && { skip_next=no; continue; }; case $flg in *=*|--*) continue;; -*I) strip_trailopt 'I'; skip_next=yes;; -*I?*) strip_trailopt 'I';; -*O) strip_trailopt 'O'; skip_next=yes;; -*O?*) strip_trailopt 'O';; -*l) strip_trailopt 'l'; skip_next=yes;; -*l?*) strip_trailopt 'l';; -[dEDm]) skip_next=yes;; -[JT]) skip_next=yes;; esac; case $flg in *$target_option*) has_opt=yes; break;; esac; done; test $has_opt = yes); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo check-recursive | sed s/-recursive//`; \ case "check-recursive" in \ distclean-* | maintainer-clean-*) list='accessibility conform interactive micro-bench performance' ;; \ *) list='accessibility conform interactive micro-bench performance' ;; \ esac; \ for subdir in $list; do \ echo "Making $target in $subdir"; \ if test "$subdir" = "."; then \ dot_seen=yes; \ local_target="$target-am"; \ else \ local_target="$target"; \ fi; \ (CDPATH="${ZSH_VERSION+.}:" && cd $subdir && /usr/bin/make $local_target) \ || eval $failcom; \ done; \ if test "$dot_seen" = "no"; then \ /usr/bin/make "$target-am" || exit 1; \ fi; test -z "$fail"
tkloczko 47216 0.0 0.0 2908 2264 pts/8 S+ 19:26 0:00 \_ /usr/bin/make check
tkloczko 47217 0.0 0.0 2908 2192 pts/8 S+ 19:26 0:00 \_ /usr/bin/make check-am
tkloczko 47219 0.0 0.0 2908 2316 pts/8 S+ 19:26 0:00 \_ /usr/bin/make check-TESTS
tkloczko 47225 0.0 0.0 3728 2860 pts/8 S+ 19:26 0:00 \_ /bin/sh -c set +e; bases='actor-anchors.log actor-destroy.log actor-graph.log actor-invariants.log actor-iter.log actor-layout.log actor-meta.log actor-offscreen-limit-max-size.log actor-offscreen-redirect.log actor-paint-opacity.log actor-pick.log actor-shader-effect.log actor-size.log binding-pool.log color.log events-touch.log interval.log model.log script-parser.log units.log text.log animator.log behaviours.log group.log rectangle.log texture.log'; bases=`for i in $bases; do echo $i; done | sed 's/\.log$//'`; bases=`echo $bases`; \ log_list=`for i in $bases; do echo $i.log; done`; \ trs_list=`for i in $bases; do echo $i.trs; done`; \ log_list=`echo $log_list`; trs_list=`echo $trs_list`; \ /usr/bin/make test-suite.log TEST_LOGS="$log_list"; \ exit $?;
tkloczko 47234 0.0 0.0 2908 2192 pts/8 S+ 19:26 0:00 \_ /usr/bin/make test-suite.log TEST_LOGS=actor-anchors.log actor-destroy.log actor-graph.log actor-invariants.log actor-iter.log actor-layout.log actor-meta.log actor-offscreen-limit-max-size.log actor-offscreen-redirect.log actor-paint-opacity.log actor-pick.log actor-shader-effect.log actor-size.log binding-pool.log color.log events-touch.log interval.log model.log script-parser.log units.log text.log animator.log behaviours.log group.log rectangle.log texture.log
tkloczko 47405 0.0 0.0 3864 2800 pts/8 S+ 19:26 0:00 \_ /bin/sh -c p='actor-layout'; \ b='actor-layout'; \ case $- in *e*) set +e;; esac; srcdirstrip=`echo "." | sed 's|.|.|g'`; case $p in ./*) f=`echo "$p" | sed "s|^$srcdirstrip/||"`;; *) f=$p;; esac; { mgn= red= grn= lgn= blu= brg= std=; am__color_tests=no; if test "X" = Xno; then am__color_tests=no; elif test "X" = Xalways; then am__color_tests=yes; elif test "X$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then am__color_tests=yes; fi; if test $am__color_tests = yes; then red='?[0;31m'; grn='?[0;32m'; lgn='?[1;32m'; blu='?[1;34m'; mgn='?[0;35m'; brg='?[1m'; std='?[m'; fi; }; srcdir=.; export srcdir; case "actor-layout.log" in */*) am__odir=`echo "./actor-layout.log" | sed 's|/[^/]*$||'`;; *) am__odir=.;; esac; test "x$am__odir" = x"." || test -d "$am__odir" || /usr/bin/mkdir -p "$am__odir" || exit $?; if test -f "./$f"; then dir=./; elif test -f "$f"; then dir=; else dir="./"; fi; tst=$dir$f; log='actor-layout.log'; if test -n ''; then am__enable_hard_errors=no; else am__enable_hard_errors=yes; fi; case " " in *[\ \?]$f[\ \?]* | *[\ \?]$dir$f[\ \?]*) am__expect_failure=yes;; *) am__expect_failure=no;; esac; G_TEST_SRCDIR="/home/tkloczko/rpmbuild/BUILD/clutter-1.26.2/tests/conform" G_TEST_BUILDDIR="/home/tkloczko/rpmbuild/BUILD/clutter-1.26.2/tests/conform" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$((${RANDOM:-256} % 256)) G_ENABLE_DIAGNOSTIC=0 CLUTTER_ENABLE_DIAGNOSTIC=0 env AM_TAP_AWK='gawk' /bin/sh ../../build/autotools/tap-driver.sh --test-name "$f" \ --log-file $b.log --trs-file $b.trs \ --color-tests "$am__color_tests" --enable-hard-errors "$am__enable_hard_errors" --expect-failure "$am__expect_failure" -- ../../build/autotools/tap-test \ "$tst"
tkloczko 47409 0.0 0.0 3860 3016 pts/8 S+ 19:26 0:00 \_ /bin/sh ../../build/autotools/tap-driver.sh --test-name actor-layout --log-file actor-layout.log --trs-file actor-layout.trs --color-tests yes --enable-hard-errors yes --expect-failure no -- ../../build/autotools/tap-test ./actor-layout
tkloczko 47410 0.0 0.0 3860 1780 pts/8 S+ 19:26 0:00 \_ /bin/sh ../../build/autotools/tap-driver.sh --test-name actor-layout --log-file actor-layout.log --trs-file actor-layout.trs --color-tests yes --enable-hard-errors yes --expect-failure no -- ../../build/autotools/tap-test ./actor-layout
tkloczko 47412 0.0 0.0 3728 2748 pts/8 S+ 19:26 0:00 | \_ /bin/sh ../../build/autotools/tap-test ./actor-layout
tkloczko 47413 0.6 0.0 170004 51032 pts/8 Sl+ 19:26 0:00 | \_ /home/tkloczko/rpmbuild/BUILD/clutter-1.26.2/tests/conform/.libs/lt-actor-layout -k --tap
tkloczko 47411 0.0 0.0 5732 3360 pts/8 S+ 19:26 0:00 \_ gawk -v me=tap-driver.sh -v test_script_name=actor-layout -v log_file=actor-layout.log -v trs_file=actor-layout.trs -v expect_failure=0 -v merge=0 -v ignore_exit=0 -v comments=0 -v diag_string=# # FIXME: the usages of "cat >&3" below could be optimized when using # FIXME: GNU awk, and/on on systems that supports /dev/fd/. # Implementation note: in what follows, `result_obj` will be an # associative array that (partly) simulates a TAP result object # from the `TAP::Parser` perl module. ## ----------- ## ## FUNCTIONS ## ## ----------- ## function fatal(msg) { print me ": " msg | "cat >&2" exit 1 } function abort(where) { fatal("internal error " where) } # Convert a boolean to a "yes"/"no" string. function yn(bool) { return bool ? "yes" : "no"; } function add_test_result(result) { if (!test_results_index) test_results_index = 0 test_results_list[test_results_index] = result test_results_index += 1 test_results_seen[result] = 1; } # Whether the test script should be re-run by "make recheck". function must_recheck() { for (k in test_results_seen) if (k != "XFAIL" && k != "PASS" && k != "SKIP") return 1 return 0 } # Whether the content of the log file associated to this test should # be copied into the "global" test-suite.log. function copy_in_global_log() { for (k in test_results_seen) if (k != "PASS") return 1 return 0 } # FIXME: this can certainly be improved ... function get_global_test_result() { if ("ERROR" in test_results_seen) return "ERROR" if ("FAIL" in test_results_seen || "XPASS" in test_results_seen) return "FAIL" all_skipped = 1 for (k in test_results_seen) if (k != "SKIP") all_skipped = 0 if (all_skipped) return "SKIP" return "PASS"; } function stringify_result_obj(result_obj) { if (result_obj["is_unplanned"] || result_obj["number"] != testno) return "ERROR" if (plan_seen == LATE_PLAN) return "ERROR" if (result_obj["directive"] == "TODO") return result_obj["is_ok"] ? "XPASS" : "XFAIL" if (result_obj["directive"] == "SKIP") return result_obj["is_ok"] ? "SKIP" : COOKED_FAIL; if (length(result_obj["directive"])) abort("in function stringify_result_obj()") return result_obj["is_ok"] ? COOKED_PASS : COOKED_FAIL } function decorate_result(result) { color_name = color_for_result[result] if (color_name) return color_map[color_name] "" result "" color_map["std"] # If we are not using colorized output, or if we do not know how # to colorize the given result, we should return it unchanged. return result } function report(result, details) { if (result ~ /^(X?(PASS|FAIL)|SKIP|ERROR)/) { msg = ": " test_script_name add_test_result(result) } else if (result == "#") { msg = " " test_script_name ":" } else { abort("in function report()") } if (length(details)) msg = msg " " details # Output on console might be colorized. print decorate_result(result) msg # Log the result in the log file too, to help debugging (this is # especially true when said result is a TAP error or "Bail out!"). print result msg | "cat >&3"; } function testsuite_error(error_message) { report("ERROR", "- " error_message) } function handle_tap_result() { details = result_obj["number"]; if (length(result_obj["description"])) details = details " " result_obj["description"] if (plan_seen == LATE_PLAN) { details = details " # AFTER LATE PLAN"; } else if (result_obj["is_unplanned"]) { details = details " # UNPLANNED"; } else if (result_obj["number"] != testno) { details = sprintf("%s # OUT-OF-ORDER (expecting %d)", details, testno); } else if (result_obj["directive"]) { details = details " # " result_obj["directive"]; if (length(result_obj["explanation"])) details = details " " result_obj["explanation"] } report(stringify_result_obj(result_obj), details) } # `skip_reason` should be empty whenever planned > 0. function handle_tap_plan(planned, skip_reason) { planned += 0 # Avoid getting confused if, say, `planned` is "00" if (length(skip_reason) && planned > 0) abort("in function handle_tap_plan()") if (plan_seen) { # Error, only one plan per stream is acceptable. testsuite_error("multiple test plans") return; } planned_tests = planned # The TAP plan can come before or after *all* the TAP results; we speak # respectively of an "early" or a "late" plan. If we see the plan line # after at least one TAP result has been seen, assume we have a late # plan; in this case, any further test result seen after the plan will # be flagged as an error. plan_seen = (testno >= 1 ? LATE_PLAN : EARLY_PLAN) # If testno > 0, we have an error ("too many tests run") that will be # automatically dealt with later, so do not worry about it here. If # $plan_seen is true, we have an error due to a repeated plan, and that # has already been dealt with above. Otherwise, we have a valid "plan # with SKIP" specification, and should report it as a particular kind # of SKIP result. if (planned == 0 && testno == 0) { if (length(skip_reason)) skip_reason = "- " skip_reason; report("SKIP", skip_reason); } } function extract_tap_comment(line) { if (index(line, diag_string) == 1) { # Strip leading `diag_string` from `line`. line = substr(line, length(diag_string) + 1) # And strip any leading and trailing whitespace left. sub("^[ \t]*", "", line) sub("[ \t]*$", "", line) # Return what is left (if any). return line; } return ""; } # When this function is called, we know that line is a TAP result line, # so that it matches the (perl) RE "^(not )?ok\b". function setup_result_obj(line) { # Get the result, and remove it from the line. result_obj["is_ok"] = (substr(line, 1, 2) == "ok" ? 1 : 0) sub("^(not )?ok[ \t]*", "", line) # If the result has an explicit number, get it and strip it; otherwise, # automatically assing the next progresive number to it. if (line ~ /^[0-9]+$/ || line ~ /^[0-9]+[^a-zA-Z0-9_]/) { match(line, "^[0-9]+") # The final `+ 0` is to normalize numbers with leading zeros. result_obj["number"] = substr(line, 1, RLENGTH) + 0 line = substr(line, RLENGTH + 1) } else { result_obj["number"] = testno } if (plan_seen == LATE_PLAN) # No further test results are acceptable after a "late" TAP plan # has been seen. result_obj["is_unplanned"] = 1 else if (plan_seen && testno > planned_tests) result_obj["is_unplanned"] = 1 else result_obj["is_unplanned"] = 0 # Strip trailing and leading whitespace. sub("^[ \t]*", "", line) sub("[ \t]*$", "", line) # This will have to be corrected if we have a "TODO"/"SKIP" directive. result_obj["description"] = line result_obj["directive"] = "" result_obj["explanation"] = "" if (index(line, "#") == 0) return # No possible directive, nothing more to do. # Directives are case-insensitive. rx = "[ \t]*#[ \t]*([tT][oO][dD][oO]|[sS][kK][iI][pP])[ \t]*" # See whether we have the directive, and if yes, where. pos = match(line, rx "$") if (!pos) pos = match(line, rx "[^a-zA-Z0-9_]") # If there was no TAP directive, we have nothing more to do. if (!pos) return # Let`s now see if the TAP directive has been escaped. For example: # escaped: ok \# SKIP # not escaped: ok \\# SKIP # escaped: ok \\\\\# SKIP # not escaped: ok \ # SKIP if (substr(line, pos, 1) == "#") { bslash_count = 0 for (i = pos; i > 1 && substr(line, i - 1, 1) == "\\"; i--) bslash_count += 1 if (bslash_count % 2) return # Directive was escaped. } # Strip the directive and its explanation (if any) from the test # description. result_obj["description"] = substr(line, 1, pos - 1) # Now remove the test description from the line, that has been dealt # with already. line = substr(line, pos) # Strip the directive, and save its value (normalized to upper case). sub("^[ \t]*#[ \t]*", "", line) result_obj["directive"] = toupper(substr(line, 1, 4)) line = substr(line, 5) # Now get the explanation for the directive (if any), with leading # and trailing whitespace removed. sub("^[ \t]*", "", line) sub("[ \t]*$", "", line) result_obj["explanation"] = line } function get_test_exit_message(status) { if (status == 0) return "" if (status !~ /^[1-9][0-9]*$/) abort("getting exit status") if (status < 127) exit_details = "" else if (status == 127) exit_details = " (command not found?)" else if (status >= 128 && status <= 255) exit_details = sprintf(" (terminated by signal %d?)", status - 128) else if (status > 256 && status <= 384) # We used to report an "abnormal termination" here, but some Korn # shells, when a child process die due to signal number n, can leave # in $? an exit status of 256+n instead of the more standard 128+n. # Apparently, both behaviours are allowed by POSIX (2008), so be # prepared to handle them both. See also Austing Group report ID # 0000051 <http://www.austingroupbugs.net/view.php?id=51> exit_details = sprintf(" (terminated by signal %d?)", status - 256) else # Never seen in practice. exit_details = " (abnormal termination)" return sprintf("exited with status %d%s", status, exit_details) } function write_test_results() { print ":global-test-result: " get_global_test_result() > trs_file print ":recheck: " yn(must_recheck()) > trs_file print ":copy-in-global-log: " yn(copy_in_global_log()) > trs_file for (i = 0; i < test_results_index; i += 1) print ":test-result: " test_results_list[i] > trs_file close(trs_file); } BEGIN { ## ------- ## ## SETUP ## ## ------- ## color_map["red"]="?[0;31m" # Red. color_map["grn"]="?[0;32m" # Green. color_map["lgn"]="?[1;32m" # Light green. color_map["blu"]="?[1;34m" # Blue. color_map["mgn"]="?[0;35m" # Magenta. color_map["std"]="?[m" # No color. color_for_result["ERROR"] = "mgn" color_for_result["PASS"] = "grn" color_for_result["XPASS"] = "red" color_for_result["FAIL"] = "red" color_for_result["XFAIL"] = "lgn" color_for_result["SKIP"] = "blu" # Properly initialized once the TAP plan is seen. planned_tests = 0 COOKED_PASS = expect_failure ? "XPASS": "PASS"; COOKED_FAIL = expect_failure ? "XFAIL": "FAIL"; # Enumeration-like constants to remember which kind of plan (if any) # has been seen. It is important that NO_PLAN evaluates "false" as # a boolean. NO_PLAN = 0 EARLY_PLAN = 1 LATE_PLAN = 2 testno = 0 # Number of test results seen so far. bailed_out = 0 # Whether a "Bail out!" directive has been seen. # Whether the TAP plan has been seen or not, and if yes, which kind # it is ("early" is seen before any test result, "late" otherwise). plan_seen = NO_PLAN ## --------- ## ## PARSING ## ## --------- ## is_first_read = 1 while (1) { # Involutions required so that we are able to read the exit status # from the last input line. st = getline if (st < 0) # I/O error. fatal("I/O error while reading from input stream") else if (st == 0) # End-of-input { if (is_first_read) abort("in input loop: only one input line") break } if (is_first_read) { is_first_read = 0 nextline = $0 continue } else { curline = nextline nextline = $0 $0 = curline } # Copy any input line verbatim into the log file. print | "cat >&3" # Parsing of TAP input should stop after a "Bail out!" directive. if (bailed_out) continue # TAP test result. if ($0 ~ /^(not )?ok$/ || $0 ~ /^(not )?ok[^a-zA-Z0-9_]/) { testno += 1 setup_result_obj($0) handle_tap_result() } # TAP plan (normal or "SKIP" without explanation). else if ($0 ~ /^1\.\.[0-9]+[ \t]*$/) { # The next two lines will put the number of planned tests in $0. sub("^1\\.\\.", "") sub("[^0-9]*$", "") handle_tap_plan($0, "") continue } # TAP "SKIP" plan, with an explanation. else if ($0 ~ /^1\.\.0+[ \t]*#/) { # The next lines will put the skip explanation in $0, stripping # any leading and trailing whitespace. This is a little more # tricky in truth, since we want to also strip a potential leading # "SKIP" string from the message. sub("^[^#]*#[ \t]*(SKIP[: \t][ \t]*)?", "") sub("[ \t]*$", ""); handle_tap_plan(0, $0) } # "Bail out!" magic. # Older versions of prove and TAP::Harness (e.g., 3.17) did not # recognize a "Bail out!" directive when preceded by leading # whitespace, but more modern versions (e.g., 3.23) do. So we # emulate the latter, "more modern" behaviour. else if ($0 ~ /^[ \t]*Bail out!/) { bailed_out = 1 # Get the bailout message (if any), with leading and trailing # whitespace stripped. The message remains stored in `$0`. sub("^[ \t]*Bail out![ \t]*", ""); sub("[ \t]*$", ""); # Format the error message for the bailout_message = "Bail out!" if (length($0)) bailout_message = bailout_message " " $0 testsuite_error(bailout_message) } # Maybe we have too look for dianogtic comments too. else if (comments != 0) { comment = extract_tap_comment($0); if (length(comment)) report("#", comment); } } ## -------- ## ## FINISH ## ## -------- ## # A "Bail out!" directive should cause us to ignore any following TAP # error, as well as a non-zero exit status from the TAP producer. if (!bailed_out) { if (!plan_seen) { testsuite_error("missing test plan") } else if (planned_tests != testno) { bad_amount = testno > planned_tests ? "many" : "few" testsuite_error(sprintf("too %s tests run (expected %d, got %d)", bad_amount, planned_tests, testno)) } if (!ignore_exit) { # Fetch exit status from the last line. exit_message = get_test_exit_message(nextline) if (exit_message) testsuite_error(exit_message) } } write_test_results() exit 0 } # End of "BEGIN" block.
tkloczko 47437 0.0 0.0 3728 2868 pts/8 S+ 19:26 0:00 \_ sh -c cat >&3
tkloczko 47438 0.0 0.0 2464 712 pts/8 S+ 19:26 0:00 \_ cat
</pre>https://gitlab.gnome.org/Archive/clutter/-/issues/51.26.2: clutter isn't LTO ready2020-02-21T16:31:15ZTomasz Kłoczko1.26.2: clutter isn't LTO readyWhen clutter is build with LTO optimisation linking fails.
<pre>make[2]: Leaving directory &apos;/home/tkloczko/rpmbuild/BUILD/clutter-1.26.2/clutter&apos;
make[2]: Entering directory &apos;/home/tkloczko/rpmbuild/BUILD/clutter-1.26.2/c...When clutter is build with LTO optimisation linking fails.
<pre>make[2]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/clutter-1.26.2/clutter'
make[2]: Entering directory '/home/tkloczko/rpmbuild/BUILD/clutter-1.26.2/clutter'
CPPFLAGS="" CFLAGS="-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -flto" LDFLAGS="-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto -fuse-linker-plugin" CC="gcc" PKG_CONFIG="/usr/bin/x86_64-redhat-linux-gnu-pkg-config" GI_HOST_OS="" DLLTOOL="false" /usr/bin/g-ir-scanner --namespace=Clutter --nsversion=1.0 --libtool="/bin/sh ../libtool" --include=GL-1.0 --include=GObject-2.0 --include=cairo-1.0 --include=Cogl-1.0 --include=CoglPango-1.0 --include=Atk-1.0 --include=Json-1.0 --library=libclutter-1.0.la --warn-all --c-include='clutter/clutter.h' --pkg-export=clutter-1.0 --cflags-begin -DCLUTTER_PREFIX=\""/usr"\" -DCLUTTER_LIBDIR=\""/usr/lib64"\" -DCLUTTER_DATADIR=\""/usr/share"\" -DCLUTTER_LOCALEDIR=\""/usr/share/locale"\" -DCLUTTER_SYSCONFDIR=\""/etc"\" -DCLUTTER_COMPILATION=1 -DCOGL_ENABLE_EXPERIMENTAL_API -DCOGL_DISABLE_DEPRECATION_WARNINGS -DG_LOG_DOMAIN=\"Clutter\" -I.. -I../clutter -I../clutter/cally -I.. -I../clutter -DGLIB_DISABLE_DEPRECATION_WARNINGS -DG_DISABLE_CAST_CHECKS -fvisibility=hidden -I/usr/include/cogl -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libdrm -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -pthread -I/usr/include/json-glib-1.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -pthread --cflags-end clutter-action.h clutter-actor-meta.h clutter-actor.h clutter-align-constraint.h clutter-animatable.h clutter-backend.h clutter-bind-constraint.h clutter-binding-pool.h clutter-bin-layout.h clutter-blur-effect.h clutter-box-layout.h clutter-brightness-contrast-effect.h clutter-cairo.h clutter-canvas.h clutter-child-meta.h clutter-click-action.h clutter-cogl-compat.h clutter-clone.h clutter-color-static.h clutter-color.h clutter-colorize-effect.h clutter-constraint.h clutter-container.h clutter-content.h clutter-deform-effect.h clutter-deprecated.h clutter-desaturate-effect.h clutter-device-manager.h clutter-drag-action.h clutter-drop-action.h clutter-effect.h clutter-enums.h clutter-event.h clutter-feature.h clutter-fixed-layout.h clutter-flow-layout.h clutter-gesture-action.h clutter-grid-layout.h clutter-group.h clutter-image.h clutter-input-device.h clutter-interval.h clutter-keyframe-transition.h clutter-keysyms.h clutter-layout-manager.h clutter-layout-meta.h clutter-macros.h clutter-main.h clutter-offscreen-effect.h clutter-page-turn-effect.h clutter-paint-nodes.h clutter-paint-node.h clutter-pan-action.h clutter-path-constraint.h clutter-path.h clutter-property-transition.h clutter-rotate-action.h clutter-script.h clutter-scriptable.h clutter-scroll-actor.h clutter-settings.h clutter-shader-effect.h clutter-shader-types.h clutter-swipe-action.h clutter-snap-constraint.h clutter-stage.h clutter-stage-manager.h clutter-tap-action.h clutter-test-utils.h clutter-texture.h clutter-text.h clutter-text-buffer.h clutter-timeline.h clutter-transition-group.h clutter-transition.h clutter-types.h clutter-units.h clutter-zoom-action.h clutter.h clutter-version.h clutter-autocleanups.h deprecated/clutter-actor.h deprecated/clutter-alpha.h deprecated/clutter-animatable.h deprecated/clutter-animation.h deprecated/clutter-animator.h deprecated/clutter-backend.h deprecated/clutter-behaviour.h deprecated/clutter-behaviour-depth.h deprecated/clutter-behaviour-ellipse.h deprecated/clutter-behaviour-opacity.h deprecated/clutter-behaviour-path.h deprecated/clutter-behaviour-rotate.h deprecated/clutter-behaviour-scale.h deprecated/clutter-bin-layout.h deprecated/clutter-box.h deprecated/clutter-cairo-texture.h deprecated/clutter-container.h deprecated/clutter-fixed.h deprecated/clutter-frame-source.h deprecated/clutter-group.h deprecated/clutter-input-device.h deprecated/clutter-keysyms.h deprecated/clutter-list-model.h deprecated/clutter-main.h deprecated/clutter-media.h deprecated/clutter-model.h deprecated/clutter-rectangle.h deprecated/clutter-score.h deprecated/clutter-shader.h deprecated/clutter-stage-manager.h deprecated/clutter-stage.h deprecated/clutter-state.h deprecated/clutter-table-layout.h deprecated/clutter-texture.h deprecated/clutter-timeline.h deprecated/clutter-timeout-pool.h deprecated/clutter-util.h clutter-config.h clutter-enum-types.h clutter-marshal.h clutter-action.c clutter-actor-box.c clutter-actor-meta.c clutter-actor.c clutter-align-constraint.c clutter-animatable.c clutter-backend.c clutter-base-types.c clutter-bezier.c clutter-bind-constraint.c clutter-binding-pool.c clutter-bin-layout.c clutter-blur-effect.c clutter-box-layout.c clutter-brightness-contrast-effect.c clutter-cairo.c clutter-canvas.c clutter-child-meta.c clutter-click-action.c clutter-clone.c clutter-color.c clutter-colorize-effect.c clutter-constraint.c clutter-container.c clutter-content.c clutter-deform-effect.c clutter-desaturate-effect.c clutter-device-manager.c clutter-drag-action.c clutter-drop-action.c clutter-effect.c clutter-event.c clutter-feature.c clutter-fixed-layout.c clutter-flatten-effect.c clutter-flow-layout.c clutter-gesture-action.c clutter-grid-layout.c clutter-image.c clutter-input-device.c clutter-interval.c clutter-keyframe-transition.c clutter-keysyms-table.c clutter-layout-manager.c clutter-layout-meta.c clutter-main.c clutter-master-clock.c clutter-master-clock-default.c clutter-offscreen-effect.c clutter-page-turn-effect.c clutter-paint-nodes.c clutter-paint-node.c clutter-pan-action.c clutter-path-constraint.c clutter-path.c clutter-property-transition.c clutter-rotate-action.c clutter-script.c clutter-script-parser.c clutter-scriptable.c clutter-scroll-actor.c clutter-settings.c clutter-shader-effect.c clutter-shader-types.c clutter-swipe-action.c clutter-snap-constraint.c clutter-stage.c clutter-stage-manager.c clutter-stage-window.c clutter-tap-action.c clutter-test-utils.c clutter-text.c clutter-text-buffer.c clutter-transition-group.c clutter-transition.c clutter-timeline.c clutter-units.c clutter-util.c clutter-paint-volume.c clutter-zoom-action.c deprecated/clutter-actor-deprecated.c deprecated/clutter-alpha.c deprecated/clutter-animation.c deprecated/clutter-animator.c deprecated/clutter-behaviour.c deprecated/clutter-behaviour-depth.c deprecated/clutter-behaviour-ellipse.c deprecated/clutter-behaviour-opacity.c deprecated/clutter-behaviour-path.c deprecated/clutter-behaviour-rotate.c deprecated/clutter-behaviour-scale.c deprecated/clutter-box.c deprecated/clutter-cairo-texture.c deprecated/clutter-fixed.c deprecated/clutter-frame-source.c deprecated/clutter-group.c deprecated/clutter-input-device-deprecated.c deprecated/clutter-layout-manager-deprecated.c deprecated/clutter-list-model.c deprecated/clutter-media.c deprecated/clutter-model.c deprecated/clutter-rectangle.c deprecated/clutter-score.c deprecated/clutter-shader.c deprecated/clutter-state.c deprecated/clutter-table-layout.c deprecated/clutter-texture.c deprecated/clutter-timeout-pool.c clutter-enum-types.c clutter-marshal.c libclutter-1.0.la Makefile --output Clutter-1.0.gir
g-ir-scanner: link: /bin/sh ../libtool --mode=link --tag=CC gcc -o /home/tkloczko/rpmbuild/BUILD/clutter-1.26.2/clutter/tmp-introspectjrqkg4f8/Clutter-1.0 -export-dynamic -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -flto /home/tkloczko/rpmbuild/BUILD/clutter-1.26.2/clutter/tmp-introspectjrqkg4f8/Clutter-1.0.o -L. libclutter-1.0.la -lgio-2.0 -lgobject-2.0 -Wl,--export-dynamic -pthread -lgmodule-2.0 -lglib-2.0 -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto -fuse-linker-plugin
libtool: link: gcc -o /home/tkloczko/rpmbuild/BUILD/clutter-1.26.2/clutter/tmp-introspectjrqkg4f8/.libs/Clutter-1.0 -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -flto /home/tkloczko/rpmbuild/BUILD/clutter-1.26.2/clutter/tmp-introspectjrqkg4f8/Clutter-1.0.o -Wl,--export-dynamic -pthread -Wl,-z -Wl,relro -Wl,--as-needed -Wl,-z -Wl,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto -fuse-linker-plugin -Wl,--export-dynamic -L. ./.libs/libclutter-1.0.so -lm -lcogl-path -latk-1.0 -lcogl-pango -lcogl -lwayland-egl -lgbm -ldrm -lEGL -lXrandr -ljson-glib-1.0 -lgdk-3 -lpangocairo-1.0 -lcairo-gobject -lcairo -lpixman-1 -lpng16 -lz -lxcb-shm -lxcb -lxcb-render -lXrender -lwayland-cursor -lwayland-client -lwayland-server -lX11 -lXext -lXdamage -lXfixes -lXcomposite -lXi -lpangoft2-1.0 -lpango-1.0 -lfontconfig -lfreetype -lgdk_pixbuf-2.0 -ludev -linput -lxkbcommon -lgthread-2.0 -lgio-2.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -pthread
Invalid GType function: 'clutter_point_get_type'
Failed to find symbol 'clutter_point_get_type'
Command '['/home/tkloczko/rpmbuild/BUILD/clutter-1.26.2/clutter/tmp-introspectjrqkg4f8/Clutter-1.0', '--introspect-dump=/home/tkloczko/rpmbuild/BUILD/clutter-1.26.2/clutter/tmp-introspectjrqkg4f8/functions.txt,/home/tkloczko/rpmbuild/BUILD/clutter-1.26.2/clutter/tmp-introspectjrqkg4f8/dump.xml']' returned non-zero exit status 1.
make[2]: *** [/usr/share/gobject-introspection-1.0/Makefile.introspection:156: Clutter-1.0.gir] Error 1
make[2]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/clutter-1.26.2/clutter'
make[1]: *** [Makefile:1941: all] Error 2
</pre>https://gitlab.gnome.org/Archive/clutter/-/issues/4The headerbar in fullscreen in RTL is broken2019-08-19T23:03:04ZBugzillaThe headerbar in fullscreen in RTL is broken## Submitted by Yosef Or Boczko
**[Link to original bug (#760665)](https://bugzilla.gnome.org/show_bug.cgi?id=760665)**
## Description
Created attachment 319090
Screenshot
Just see the screenshot.
**Attachment 319090**, "Screens...## Submitted by Yosef Or Boczko
**[Link to original bug (#760665)](https://bugzilla.gnome.org/show_bug.cgi?id=760665)**
## Description
Created attachment 319090
Screenshot
Just see the screenshot.
**Attachment 319090**, "Screenshot":
![totem-fullscreen-RTL-15-01-2016](/uploads/dbe78909098c327235058da46aec1065/totem-fullscreen-RTL-15-01-2016.png)https://gitlab.gnome.org/Archive/clutter/-/issues/3Fonts do not have anti-aliasing at the edges of chars in the Gnome-shell magn...2018-06-10T16:13:25ZAndrej GricenkoFonts do not have anti-aliasing at the edges of chars in the Gnome-shell magnifier modeIn the Gnome-shell's magnifier mode, the boundaries of the symbols are cut off by a portion of the smoothing of the symbols themselves. This does not happen in application windows, but only in the views of the Gnome shell itself, for exa...In the Gnome-shell's magnifier mode, the boundaries of the symbols are cut off by a portion of the smoothing of the symbols themselves. This does not happen in application windows, but only in the views of the Gnome shell itself, for example, on the top bar or the application menu.
![Снимок_экрана_от_2018-06-10_16-12-47](/uploads/4811003301d1ee24e8faa505e3d44fa3/Снимок_экрана_от_2018-06-10_16-12-47.png)
![Снимок_экрана_от_2018-06-10_16-12-07](/uploads/a809705a649802aadd8b20f1bf233e64/Снимок_экрана_от_2018-06-10_16-12-07.png)https://gitlab.gnome.org/Archive/clutter/-/issues/2Gnome-shell rendered incorrectly in magnifier mode2018-06-10T16:40:08ZAndrej GricenkoGnome-shell rendered incorrectly in magnifier modeWith the magnifier turned on, some parts of the Gnome-shell are not displayed correctly (see screenshots). This applies mainly to the top panel, launcher and application menus. They look as if they were scaled with a magnifier, the size ...With the magnifier turned on, some parts of the Gnome-shell are not displayed correctly (see screenshots). This applies mainly to the top panel, launcher and application menus. They look as if they were scaled with a magnifier, the size of the rectangle selected for their drawing remains the same size. Thus, the edges outside this rectangle are trimmed, and the rectangle itself moves within the cropped area (when the mouse pointer moves), displaying its different parts.
![Снимок_экрана_от_2018-06-10_15-29-56](/uploads/9f58940d1dbb94e83f2fdf033153e903/Снимок_экрана_от_2018-06-10_15-29-56.png)
![Снимок_экрана_от_2018-06-10_15-27-37](/uploads/d5d84d626c165a66576b9ce22d76a689/Снимок_экрана_от_2018-06-10_15-27-37.png)
![Снимок_экрана_от_2018-06-10_15-35-45](/uploads/d0129d070745afd7f3cee117fce57d5f/Снимок_экрана_от_2018-06-10_15-35-45.png)