unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* GNU G-Golf 0.8.0-rc-3 available for testing
@ 2024-04-17  5:56 David Pirotte
  2024-04-17 22:30 ` pelzflorian (Florian Pelz)
  0 siblings, 1 reply; 30+ messages in thread
From: David Pirotte @ 2024-04-17  5:56 UTC (permalink / raw)
  To: guile-user, guile-devel

[-- Attachment #1: Type: text/plain, Size: 3823 bytes --]

Hello Guilers,

The third release candidate of the upcoming GNU G-Golf 0.8.0 release is
now available for testing:

* Tarball and a GPG detached signature [*]:

	http://ftp.gnu.org/gnu/g-golf/g-golf-0.8.0-rc-3.tar.gz
	http://ftp.gnu.org/gnu/g-golf/g-golf-0.8.0-rc-3.tar.gz.sig

* Install

Dependencies and complete installation instructions are given in the
distributed INSTALL file, or here:

	https://www.gnu.org/software/g-golf/install.html

* Noteworthy changes in 0.8.0-rc-3

Here is a summary of the noteworthy changes in this release, also
available in NEWS file and on the G-Golf website.

** Dependencies

*** Adwaita examples

  Adw-1  >=  1.5.0

The adw1-demo has been updated, following upstream changes, so that most
of its demo pages now inherit and/or use the AdwDialog class, which is
available in Adwaita since 1.5.

** Examples

*** Adwaita Demo

The 'Navigation View' and 'Style Classes' pages have been updated to
inherit and/or use the AdwDialog Class.

The 'Dialogs' page has been updated to use the AdwAlertDialog class. It
also has been enhanced to properly support the async-api model, and,
while running the alert dialog callback, to dismiss any previsouly added
'Toast' if any.

** Bug fixing

*** Autotool chain

Changes has been made to support parallel installation as well as
cross-compilation.

*** Callback closure marshal(er)

The callback closure marshal(er) has been fixed to support callback with
'inout and 'out argument(s).

*** scm->gi-argument

Fixed to allow all GDestroyNotify callback functions to be nullable by
default.

* You can help

1. Testing by installing from the tarball, or from the source if you
   prefer, on the distro of your choice.

2. By running the distributed examples.

Ultimately, one of the best way to test, and participate, is to select
G-Golf to develop the next application of your dream! Here is an
overview of the GNOME platform libraries [1], accessible using G-Golf.
In particular, libadwaita [2] provides a number of widgets that change
their layout based on the available space. This can be used to make
applications adapt their UI between desktop and mobile devices (as shown
in the G-Golf port of the "Adwaita demo").

* Contact

Consider joining us on irc [3], where you may ask for help or report a
problem [4].

However, if you prefer:

	G-Golf uses the guile-user@gnu.org mailing list
	Report bugs to bug-g-golf@gnu.org


Thanks!
David


[*] Use a .sig file to verify that the corresponding file (without the
    .sig suffix) is intact.  First, be sure to download both the .sig
    file and the corresponding tarball.  Then, run a command like this:

	gpg --verify g-golf-0.8.0-rc-3.tar.gz

    If that command fails because you don't have the required public
    key, then run this command to import it:

	gpg --keyserver keys.gnupg.net --recv-keys A3057AD7

    and rerun the 'gpg --verify' command


[1] https://developer.gnome.org/documentation/introduction/overview/libraries.html
[2] https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/
[3] https://www.gnu.org/software/g-golf/contact.html

[4] When reporting a problem, or if you think you found a bug, it is
very important that you prepare a minimal reproducible example (MRE),
sometimes also referred to as a short self-contained correct example
(SSCCE)

	http://www.sscce.org/
	https://en.wikipedia.org/wiki/Minimal_reproducible_example

Also, on irc, we chat :), so please do not write code snipsets directly
in the channel, unless 2 or 3 lines of code, nor error messages of
course - for more then 2 or 3 lines of code, or error messages, always
use a tor-friendly paste service (avoid those that track its visitors
and require javascript, thanks!).

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-04-17  5:56 GNU G-Golf 0.8.0-rc-3 available for testing David Pirotte
@ 2024-04-17 22:30 ` pelzflorian (Florian Pelz)
  2024-04-18 22:21   ` David Pirotte
  0 siblings, 1 reply; 30+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-04-17 22:30 UTC (permalink / raw)
  To: David Pirotte; +Cc: guile-user

Thank you for the work, David.  I have a question; how do you debug when
Guile crashes to terminal printing “Segmentation fault”`?

The long story so far:

I want to develop a GTK app with G-Golf.  I try to run it with
GNU Guix [1] (not Debian like you do, as far as I remember), because now
the Guix’ hard-working gnome team have added the needed version of
gobject-introspection to Guix.

I have cloned the g-golf repository:

$ cd ~/src
$ git clone 'https://git.savannah.gnu.org/git/g-golf.git'

To create the app’s basic structure, I run Guile Hall [2]:

$ guix shell guile-hall
$ hall init --author "Florian Pelz" myapp --execute

This gives me a guix.scm file, where I add g-golf and gtk to the inputs:

(use-modules (gnu packages gtk)
             (gnu packages guile)
             (gnu packages guile-xyz)
             (guix transformations))
(package
  (name "myapp")
  […]
  (inputs (list guile-3.0 gtk
                ((options->transformation
                  '((with-commit . "guile-g-golf=v0.8.0-rc-3")))
                 guile-g-golf)))
  […])


Now I run:

$ guix shell
$ ~/src/g-golf/examples/gtk-4/hello-world.scm

It tells me dbus-launch must be running, so I add a d-bus service to my
Guix Home configuration.

(use-modules (gnu home services desktop))
(home-environment
  (packages […])
  (services
   (list (service home-dbus-service-type)
         […])))

I run again the commands

$ guix shell
$ ~/src/g-golf/examples/gtk-4/hello-world.scm

successfully; a window is shown, though not responsive, with plenty of errors.

(hello-world.scm:12627): Gtk-WARNING **: 23:59:50.617: Unable to acquire the address of the accessibility bus: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files. If you are attempting to run GTK without a11y support, GTK_A11Y should be set to 'none'.

(hello-world.scm:12627): GLib-GObject-CRITICAL **: 23:59:51.067: cannot register existing type 'GdkPixbuf'  

(hello-world.scm:12627): GLib-GObject-CRITICAL **: 23:59:51.067: g_type_add_interface_static: assertion 'G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(hello-world.scm:12627): GLib-GObject-CRITICAL **: 23:59:51.067: g_type_add_interface_static: assertion 'G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(hello-world.scm:12627): GLib-CRITICAL **: 23:59:51.068: g_once_init_leave: assertion 'result != 0' failed      



However, when I now run:

$ ~/src/g-golf/examples/gtk-4/drawing-widget.scm

it crashes, displaying only “Segmentation fault”.  Same with

$ ~/src/g-golf/examples/gtk-4/peg-solitaire.scm

I run and read

$ info "(guile)Catching Exceptions"

but the techniques from there that I tried do not catch the segmentation
fault.  How did you go about debugging such errors?  Because I suppose
you must have been having such debugging sessions too.

Regards,
Florian

[1] GNU Guix: https://guix.gnu.org/
[2] Guix’ guile-hall package from
https://gitlab.com/a-sassmannshausen/guile-hall



^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-04-17 22:30 ` pelzflorian (Florian Pelz)
@ 2024-04-18 22:21   ` David Pirotte
  2024-04-19 17:00     ` pelzflorian (Florian Pelz)
  0 siblings, 1 reply; 30+ messages in thread
From: David Pirotte @ 2024-04-18 22:21 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: guile-user

[-- Attachment #1: Type: text/plain, Size: 4188 bytes --]

Hi Florian,

> Thank you for the work, David.  I have a question; how do you debug
> when Guile crashes to terminal printing “Segmentation fault”`?

Thanks. You shouldn't have to do this 'on your own', if you submit a
reproducible minimal example that i can use, i'll track and fix
the bug ... If it is a distro problem, which is the situation you are
facing, you should talk to the distro (involved pkgs maintainers)
(additional tips below ...)

But i am curious, does make check pass in Guix?

> I want to develop a GTK app with G-Golf.

I highly recommend you use Adwaita (and Gtk-4 when that applies), not
'just' Gtk-4.

> to run it with GNU Guix [1] (not Debian like you do, as far as I 
> remember), because now the Guix’ hard-working gnome team have added
> the needed version of gobject-introspection to Guix.

Great - Proper GLib/GObject/GObject-Introspection libs is a
pre-requisite ofc, but Guix is known to wrongly set-up things: I think
Ricardo Wurmus <rekado@elephly.net> knows what to do, he did succeed,
once, to run the hello-world example in guix a few years ago, but i
didn't take note of what he did and can't find neither an email, nor in
the logs, how/what needs to be done - I think it has something to do
with grafts, iirc ... I hope he will shim-in to let you know ...

> $ cd ~/src
> $ git clone 'https://git.savannah.gnu.org/git/g-golf.git'

I am curious, can't you just run the make danse in guix? 

	./autogen.sh
	./configure [--prefix=...] --with-guile-site
	# before to run make, you need to uninstall 
	# g-golf (if it is installed ...)
	make

Because i'd be interested to know the output of running make check,
in Guix that is ...

	# it needs Gtk-3.0
	make check

> To create the app’s basic structure, I run Guile Hall [2]:
> ...
> Now I run:
> $ guix shell
> $ ~/src/g-golf/examples/gtk-4/hello-world.scm

> It tells me dbus-launch must be running, so I add a d-bus service to
> my Guix Home configuration.

Never seen such a warning, I guess all other distro run the service by
default  - i'll ask uptream, but maybe worth adding the service as a
g-golf 'start-up' requirement in Guix ...

> $ guix shell
> $ ~/src/g-golf/examples/gtk-4/hello-world.scm

> successfully; a window is shown, though not responsive, with plenty
> of errors.

in Guix that is ... no other distro reports nor even a single
warning/error ...

> (hello-world.scm:12627): Gtk-WARNING **: 23:59:50.617: Unable to
> acquire the address of the accessibility bus:
> GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name
> org.a11y.Bus was not provided by any .service files. If you are
> attempting to run GTK without a11y support, GTK_A11Y should be set to
> 'none'.

You should be able to solve this easily, or apply the suggested GTK_A11Y
env setting ...

> (hello-world.scm:12627): GLib-GObject-CRITICAL **: 23:59:51.067:
> cannot register existing type 'GdkPixbuf'  

From here, nothing will ever work - You and Guix guru, need to find out
why .. -the symptom is that in Guix, for some reason, you are trying to
import the Gtk(Gsk/Gdk) lib more then once, in the same memory session,
which won't work, as GObject is a dynamic typing system, all those
types are being defined at runtime, and none can be defined more then
once ...

> However, when I now run:

> $ ~/src/g-golf/examples/gtk-4/drawing-widget.scm
> it crashes, displaying only “Segmentation fault”.  Same with
> $ ~/src/g-golf/examples/gtk-4/peg-solitaire.scm

... right, as i said, nothing will work - these segfaults because
guile/g-golf doesn't stop to (try to) run the app/example because of an
upstream lib (Critical)warning ... but in this situation, it is just
impossible to run any low level upstream lib function, such as creating
a drawing surface ...

when Guix can run make check, and the hello-world example, you 'll
likely be able to run any other example, if not, we'll dig on
appropriate time ...

David

ps:	are you in #guix, #guile, if yes, what's your nick - ping me
there so we can chat - hopefully after Ricardo giives his advice to run
g-golf in guix ...



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-04-18 22:21   ` David Pirotte
@ 2024-04-19 17:00     ` pelzflorian (Florian Pelz)
  2024-04-20  4:51       ` David Pirotte
  0 siblings, 1 reply; 30+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-04-19 17:00 UTC (permalink / raw)
  To: David Pirotte; +Cc: guile-user

Hello again.  This is a bug in Guix territory; not your g-golf.  I have
successfully run gtk-4/hello-world.scm, fully responsive, apparently by
running “guix shell --no-grafts” with with-debug-info transformations,
instead of “guix shell” as before, and then broke it again, when I
changed guix.scm again.

drawing-widget.scm continued segfaulting, even during the time when
hello-world.scm worked.  I will look at it later, once I’ve
re-repaired my environment to run hello-world.scm again.

I will investigate further in container isolation with no impact from
the environment.  I want to debug how to use it properly or where to
patch Guix’ g-golf package.

My hope was you knew debugging tricks.  After fruitless debug attempts
with Guile’s ,trace meta-command, I began attaching GDB to Guile, where
I then run

scheme@(guile-user)> (getpid)
$1 = 954
scheme@(guile-user)> (setenv "G_DEBUG" "fatal-warnings")
scheme@(guile-user)> (load "/home/florian/src/g-golf/examples/gtk-4/hello-world.scm")
scheme@(guile-user)> (main '("guile"))

and in gdb look at the backtrace.  However, I did not manage to make gdb
get access to Guix’ pre-built debug info for glib and libffi yet.

(Actually, I had not known GTK4 still depends on GdkPixbuf and has not
subsumed it, but gdb debugging shows it in its backtrace.)

I’m rarely on IRC and prefer asynchronous communication.


The Adwaita hello-world fails in the same way as GTK hello-world (and
thank you for advising me to use Adwaita; I did not know it is a good
idea to use it over plain GTK).

Thank you for confirming the real error is this

> (hello-world.scm:12627): GLib-GObject-CRITICAL **: 23:59:51.067:
> cannot register existing type 'GdkPixbuf'


The warning when not running d-bus

(guile:3310): Gtk-WARNING **: 17:06:29.832: Unable to acquire session
bus: Failed to execute child process “dbus-launch” (No such file or
directory)

occurs for gnome-calculator as well and is not fatal to it.  Also it,
strangely, disappeared for g-golf’s hello-world.scm, at the time when it
worked.


There are no per-package services in Guix, so it cannot be guaranteed
d-bus is running everywhere (and missing d-bus is not fatal).  I did
try in a Guix System’s GNOME desktop environment and D-Bus and
something A11Y run there by default.  But the GdkPixbuf error was
still present.

I tried to run make check, but could not get past configure, see below.
But note that Guix’ g-golf package also runs make check successfully as
part of building g-golf, but in an isolated non-graphical different
environment.  To try, I omitted already built g-golf from guix.scm again
and

$ guix shell --no-grafts #load guix.scm
$ guix shell gtk+@3 --no-grafts
$ cd ~/src/g-golf
$ ./autogen.sh
florian@florianrock64 ~/src/g-golf [env]$ ./autogen.sh
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: running: /gnu/store/3ddp6zriaxnqxb7qig1y2n0gqfmx7qid-autoconf-2.69/bin/autoconf --force
configure:4908: error: possibly undefined macro: AC_LIB_LINKFLAGS_FROM_LIBS
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
autoreconf: /gnu/store/3ddp6zriaxnqxb7qig1y2n0gqfmx7qid-autoconf-2.69/bin/autoconf failed with exit status: 1

Now run ./configure [--prefix=/your/prefix] [--with-guile-site]
$ ./configure --with-guile-site
configure: error: cannot find install-sh, install.sh, or shtool in build-aux "."/build-aux


But the g-golf Guix package does run configure and make check
successfully after some workarounds.  Their log file is at

https://bordeaux.guix.gnu.org/build/c6bd0e09-70cc-4b78-8b78-808b6bb9d9b1
https://ci.guix.gnu.org/build/3767854/details

for both of Guix’ two build farm’s.

Regards,
Florian



^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-04-19 17:00     ` pelzflorian (Florian Pelz)
@ 2024-04-20  4:51       ` David Pirotte
  2024-04-20  8:35         ` pelzflorian (Florian Pelz)
  2024-04-30 17:51         ` pelzflorian (Florian Pelz)
  0 siblings, 2 replies; 30+ messages in thread
From: David Pirotte @ 2024-04-20  4:51 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: guile-user

[-- Attachment #1: Type: text/plain, Size: 5000 bytes --]

Hello Florian,

Before i get to the other points of your email, let me exceptionally
raise the last point first:

	> https://ci.guix.gnu.org/build/3767854/details
	This refers to g-golf-0.8.0-a.1

	Can you re-ensure me and confirm you are using the latest
	version, 0.8.0-rc-3, because a number of critical bugs have
	been fixed on the way to and one in 0.8.0-rc-3 ?

> This is a bug in Guix territory; not your g-golf.

Right -

> I have successfully run gtk-4/hello-world.scm, fully responsive
> ...

Great -
Can you 'permanently' fix the problem, in guix i mean, and 'for all',
or is it something every user has(will have to) to know about and 'do',
for every session?

> drawing-widget.scm continued segfaulting, even during the time when
> hello-world.scm worked.

Hum, it is a short and simple example, however, it uses (it has to)
define-vfunc, and this is very likely where the problem is, we'll see
...

But for now, if you don't mind, let's focus on all examples but:

	drawing-widget.scm
	simple-paintable.scm
	animated-paintable.scm

All other gtk-4 example should work, under the condition you set to
successfully run the hello-world.scm example

The adw-1 examples should work as well, both the hello-world.scm and the
adw1-demo.scm

> ...
> My hope was you knew debugging tricks.  After fruitless debug attempts
> with Guile’s ,trace meta-command, I began attaching GDB to Guile,
> where I then run
> ...

I don't have any debugging 'special' tricks or tips - in debian (you'll
have to adapt for guix ofc):

	sudo apt-get install systemd-coredump

then, when facing such a segfault problem, run the example, which
produces a coredump, then:

	cd /var/lib/systemd/coredump/
	# list the files and grab the id of the last coredump, if
	# more then one ... for example ... 1670341
	
	# install the missing symbols
	sudo -- sh -c 'rm -f core ; \
	    coredumpctl dump 1670341 > core ; \
	    find-dbgsym-packages --install core ; \
	    rm -f core'

	# get a backtrace
	sudo coredumpctl debug 1670341
	...
	(gdb) bt

> ...
> scheme@(guile-user)> (load "/home/florian/src/g-golf/examples/gtk-4/hello-world.scm")
> scheme@(guile-user)> (main '("guile"))

No big deal, but i usually run using/calling:
	(main '())

> I’m rarely on IRC and prefer asynchronous communication.

Fine, ping me if you do ... (my nick is daviid)

> The Adwaita hello-world fails in the same way as GTK hello-world

It should not,
nor the adw1-demo, under the circumstances that
makes the gtk-4 hello-world running fine that is ...

> thank you for advising me to use Adwaita; I did not know it is a good
> idea to use it over plain GTK).

Welcome -
You definitely should learn and use adwaita ...
and use gtk-4 for what ever is not in adwaita ofc ...

> Thank you for confirming the real error is this

> > (hello-world.scm:12627): GLib-GObject-CRITICAL **: 23:59:51.067:
> > cannot register existing type 'GdkPixbuf'  

I don't think 'it matters', the thing is to understand and solve is why guix is
trying to load more then once (any of) the typelib(s) involved in the
session/example you are 'running' - 

> The warning when not running d-bus

> (guile:3310): Gtk-WARNING **: 17:06:29.832: Unable to acquire session
> bus: Failed to execute child process “dbus-launch” (No such file or
> directory)
 
> occurs for gnome-calculator as well and is not fatal to it.  Also it,
> strangely, disappeared for g-golf’s hello-world.scm, at the time when
> it worked.

But you should try to solve this, with the help of guix guru ... g-golf
does not depend on dbus, but indirectly, gtk-4 (and or Gio, i can't
recall the full details now) do, to (notably) register the application ...)

Guix g-golf users should be able to assume a zero warning, zero error on
all provided g-golf examples - unless reproducible in other distro ofc.

> There are no per-package services in Guix, so it cannot be guaranteed
> d-bus is running everywhere (and missing d-bus is not fatal).  I did
> try in a Guix System’s GNOME desktop environment and D-Bus and
> something A11Y run there by default.  But the GdkPixbuf error was
> still present.

Caution - the warning that leads to the recommendation to either solve
or set the GTK_A11Y env var has nothing to do with the GdkPixbuf error

> ...
> Now run ./configure [--prefix=/your/prefix] [--with-guile-site]
> $ ./configure --with-guile-site
> configure: error: cannot find install-sh, install.sh, or shtool in
> build-aux "."/build-aux

I'll let you solve this with guix wizard(s)
 
> But the g-golf Guix package does run configure and make check
> successfully after some workarounds.  Their log file is at

> https://bordeaux.guix.gnu.org/build/c6bd0e09-70cc-4b78-8b78-808b6bb9d9b1

The above link doesn't work for me:	502 Bad Gateway

> https://ci.guix.gnu.org/build/3767854/details

This refers to g-golf-0.8.0-a.1

David

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-04-20  4:51       ` David Pirotte
@ 2024-04-20  8:35         ` pelzflorian (Florian Pelz)
  2024-04-30 17:51         ` pelzflorian (Florian Pelz)
  1 sibling, 0 replies; 30+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-04-20  8:35 UTC (permalink / raw)
  To: David Pirotte; +Cc: guile-user

Hello David,

David Pirotte <david@altosw.be> writes:
> Hello Florian,
>
> Before i get to the other points of your email, let me exceptionally
> raise the last point first:
>
> 	> https://ci.guix.gnu.org/build/3767854/details
> 	This refers to g-golf-0.8.0-a.1
>
> 	Can you re-ensure me and confirm you are using the latest
> 	version, 0.8.0-rc-3, because a number of critical bugs have
> 	been fixed on the way to and one in 0.8.0-rc-3 ?

Of course, I mistakenly pointed to upstream Guix; upstream Guix is at
g-golf-0.8.0-a.1.  Through

((options->transformation '((with-commit . "guile-g-golf=v0.8.0-rc-3")
                            (with-debug-info . "gobject-introspection")))
 guile-g-golf)))

in guix.scm, I have been using v0.8.0-rc-3, whose log file on aarch64
(I have tried on x86_64 too) says:

> starting phase `check'
> Making check in libg-golf
> _XSERVTransmkdir: ERROR: euid != 0,directory /tmp/.X11-unix will not be created.
> make[1]: Entering directory '/tmp/guix-build-guile-g-golf-0.8.0-rc-3.drv-0/source/libg-golf'
> make[1]: Nothing to be done for 'check'.
> make[1]: Leaving directory '/tmp/guix-build-guile-g-golf-0.8.0-rc-3.drv-0/source/libg-golf'
> Making check in test-suite
> make[1]: Entering directory '/tmp/guix-build-guile-g-golf-0.8.0-rc-3.drv-0/source/test-suite'
> make  check-TESTS
> make[2]: Entering directory '/tmp/guix-build-guile-g-golf-0.8.0-rc-3.drv-0/source/test-suite'
> 
> Running test suite: main-suite ----------------------------------------
> 
> Running test suite: <g-golf-test-support>-suite -----------------------
> Running test case: test-bytevector
> Running test case: test-mslot-set!
> Running test case: test-enum
> Running test case: test-flags
> Running test case: test-utils-1
> Running test case: test-utils-2
> Running test case: test-utils-2.1
> Running test case: test-utils-3
> Running test case: test-utils-4
> 
> 9 run, 0 failed
> PASS: tests/support.scm
> 
> Running test suite: main-suite ----------------------------------------
> 
> Running test suite: <g-golf-test-glib>-suite --------------------------
> Running test case: test-g-malloc
> Running test case: test-g-malloc0
> Running test case: test-g-free
> Running test case: test-g-memdup
> Running test case: test-main-context
> Running test case: test-idle-source
> Running test case: test-timeout-source
> Running test case: test-timeout-source-seconds
> Running test case: test-g-quark
> Running test case: test-g-get/set-prgname
> Running test case: test-g-get-system-*-dirs
> Running test case: test-g-slist-append
> Running test case: test-g-slist-prepend
> 
> 13 run, 0 failed
> PASS: tests/glib.scm
> 
> Running test suite: main-suite ----------------------------------------
> 
> Running test suite: <g-golf-test-gobject>-suite -----------------------
> Running test case: test-g-type-name
> Running test case: test-g-type-from-name
> Running test case: test-g-type-class-*
> Running test case: test-g-type-query
> Running test case: test-g-type-register-static-simple
> Running test case: test-g-type-add-interface-static
> Running test case: test-g-object-class-find-property
> Running test case: test-g-object-class-list-properties
> Running test case: test-g-value-size
> Running test case: test-g-value-init
> Running test case: test-g-value-unset
> Running test case: test-g-value-type*
> Running test case: test-g-value-get-boolean
> Running test case: test-g-value-set-boolean
> Running test case: test-g-value-get-int
> Running test case: test-g-value-set-int
> Running test case: test-g-value-get-uint
> Running test case: test-g-value-set-uint
> Running test case: test-g-value-get-float
> Running test case: test-g-value-set-float
> Running test case: test-g-value-get-double
> Running test case: test-g-value-set-double
> Running test case: test-g-value-get-flags
> Running test case: test-g-value-set-flags
> Running test case: test-g-value-get-string
> Running test case: test-g-value-set-string
> Running test case: test-g-value-get-param
> Running test case: test-g-value-set-param
> Running test case: test-g-value-boxed-semi-opaque
> Running test case: test-g-value-boxed-g-strv
> Running test case: test-g-value-get-pointer
> Running test case: test-g-value-set-pointer
> Running test case: test-g-value-get-object
> Running test case: test-g-value-set-object
> Running test case: test-g-params-vals
> Running test case: test-g-param-spec
> Running test case: test-g-signal-parse-name
> 
> 37 run, 0 failed
> PASS: tests/gobject.scm
> 
> Running test suite: main-suite ----------------------------------------
> 
> Running test suite: <g-golf-test-gi>-suite ----------------------------
> Running test case: test-repository
> Running test case: test-type-lib
> Running test case: test-version-information
> Running test case: test-common-types
> Running test case: test-base-info
> Running test case: test-function-info
> Running test case: test-registered-type-info
> Running test case: test-enum-info
> Running test case: test-struct-info
> Running test case: test-union-info
> Running test case: test-object-info
> Running test case: test-constant-info
> Running test case: test-field-info
> Running test case: test-property-info
> Running test case: test-type-info
> Running test case: test-utils
> Running test case: test-utils-n-string
> Running test case: test-utils-strings
> Running test case: test-utils-n-pointer
> Running test case: test-utils-pointers
> Running test case: test-utils-n-gtype
> Running test case: test-utils-gtypes
> 
> 22 run, 0 failed
> PASS: tests/gi.scm
> MESA: error: ZINK: failed to load libvulkan.so.1
> glx: failed to create drisw screen
> failed to load driver: zink
> 
> Running test suite: main-suite ----------------------------------------
> 
> Running test suite: <g-golf-test-hl-api>-suite ------------------------
> Running test case: test-n-decl-1.1
> Running test case: test-n-decl-1.2
> Running test case: test-n-decl-2
> Running test case: test-n-decl-3.1
> Running test case: test-n-decl-4.1
> Running test case: test-n-decl-4.2
> Running test case: test-n-decl-4.3
> Running test case: test-g-property-accessor
> Running test case: test-g-property-object
> Running test case: test-accessor-inheritance
> Running test case: test-closure-enum
> Running test case: test-closure-gi-enum
> Running test case: test-closure-flags
> Running test case: test-closure-gi-flags
> Running test case: test-closure-gobject
> Running test case: test-closure-sum
> Running test case: test-g-idle-add
> Running test case: test-g-timeout-add
> Running test case: test-g-timeout-add-seconds
> Running test case: test-glist-gslist->scm
> 
> 20 run, 0 failed
> PASS: tests/hl-api.scm
> MESA: error: ZINK: failed to load libvulkan.so.1
> glx: failed to create drisw screen
> failed to load driver: zink
> 
> Running test suite: main-suite ----------------------------------------
> 
> Running test suite: <g-golf-test-override-gtk>-suite ------------------
> Running test case: test-gtk-container-child-get-property
> Running test case: test-gtk-list-store-new
> Running test case: test-gtk-list-store-set-value
> Running test case: test-gtk-text-buffer-insert
> 
> 4 run, 0 failed
> PASS: tests/override.scm
> ==================
> All 6 tests passed
> ==================
> make[2]: Leaving directory '/tmp/guix-build-guile-g-golf-0.8.0-rc-3.drv-0/source/test-suite'
> make[1]: Leaving directory '/tmp/guix-build-guile-g-golf-0.8.0-rc-3.drv-0/source/test-suite'
> Making check in doc
> make[1]: Entering directory '/tmp/guix-build-guile-g-golf-0.8.0-rc-3.drv-0/source/doc'
> make[1]: Nothing to be done for 'check'.
> make[1]: Leaving directory '/tmp/guix-build-guile-g-golf-0.8.0-rc-3.drv-0/source/doc'
> Making check in examples
> make[1]: Entering directory '/tmp/guix-build-guile-g-golf-0.8.0-rc-3.drv-0/source/examples'
> Making check in gtk-4
> make[2]: Entering directory '/tmp/guix-build-guile-g-golf-0.8.0-rc-3.drv-0/source/examples/gtk-4'
> make[2]: Nothing to be done for 'check'.
> make[2]: Leaving directory '/tmp/guix-build-guile-g-golf-0.8.0-rc-3.drv-0/source/examples/gtk-4'
> Making check in adw-1
> make[2]: Entering directory '/tmp/guix-build-guile-g-golf-0.8.0-rc-3.drv-0/source/examples/adw-1'
> make[2]: Nothing to be done for 'check'.
> make[2]: Leaving directory '/tmp/guix-build-guile-g-golf-0.8.0-rc-3.drv-0/source/examples/adw-1'
> make[2]: Entering directory '/tmp/guix-build-guile-g-golf-0.8.0-rc-3.drv-0/source/examples'
> make[2]: Nothing to be done for 'check-am'.
> make[2]: Leaving directory '/tmp/guix-build-guile-g-golf-0.8.0-rc-3.drv-0/source/examples'
> make[1]: Leaving directory '/tmp/guix-build-guile-g-golf-0.8.0-rc-3.drv-0/source/examples'
> make[1]: Entering directory '/tmp/guix-build-guile-g-golf-0.8.0-rc-3.drv-0/source'
> make[1]: Nothing to be done for 'check-am'.
> make[1]: Leaving directory '/tmp/guix-build-guile-g-golf-0.8.0-rc-3.drv-0/source'
> phase `check' succeeded after 27.9 seconds


My plan is to understand the problem better first on my own
without another Guix guru and make a patch for Guix.

Only the D-Bus warning cannot really be resolved, because C GTK apps
like gnome-calculator print that warning, too.  Also I am able to use
Emacs’ Gtk FileChooser just fine.

Thank you for the coredump tip.

Regards,
Florian



^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-04-20  4:51       ` David Pirotte
  2024-04-20  8:35         ` pelzflorian (Florian Pelz)
@ 2024-04-30 17:51         ` pelzflorian (Florian Pelz)
  2024-05-01  0:51           ` David Pirotte
  2024-05-03  0:17           ` David Pirotte
  1 sibling, 2 replies; 30+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-04-30 17:51 UTC (permalink / raw)
  To: David Pirotte; +Cc: guile-user

Hello again, one more message on the current status of G-Golf on
GNU Guix, which has two real issues:

To develop with G-golf and GTK as in G-Golf’
examples/adw-1/hello-world.scm or examples/gtk-4/hello-world.scm, the
Guix commands must (at the time of writing) be used with the
“--no-grafts” option, because G-Golf first when loading runs
g_typelib_symbol on GdkPixbuf functions from Guix’ normal gdk-pixbuf
package, but later when it presents the GTK window, GTK tries to load
GdkPixbuf functions from a mostly identical replacement gdk-pixbuf
package without debug symbols installed at another /gnu/store path.
This has, I strongly believe, the same cause as Guix bug#48907 that
debug symbols are missing, [1] and a proper, permanent fix would take
time, I think, because reverting the disk space-saving commit that
caused it is a bad option and reimplementing the commit properly
should be done, I think, in guix-daemon, which is thorny.

If a G-Golf using GTK app were to be packaged for Guix, the package
would have to use tricks to reference GTK’s gdk-pixbuf package and not
normal gdk-pixbuf.  (Guix only has one G-Golf app packaged currently,
the nomad web browser, which is broken in current Guix.)

The second issue is the vfuncs when running
examples/gtk-4/drawing-widget.scm.  This segfaults at
gtk_widget_snapshot_child when run.  Similarly
examples/gtk-4/peg-solitaire.scm segfaults at
gtk_image_set_from_paintable called from g_callable_info_invoke.  It
segfaults at least with guile and guile-next Guile versions 3.0.9 and
3.0.9-0.db7efa5.  I do not understand the cause or the vfunc
implementation in G-Golf’s g-golf/hl-api/vfunc.scm file.  I will try
to compare it with Vala-generated C code and try to make it fail
similarly.

examples/gtk-4/simple-paintable.scm fails at (add-to-load-path (dirname
(current-filename)).  I have not yet spent time to debug this one
further.

David Pirotte <david@altosw.be> writes:
> The adw-1 examples should work as well, both the hello-world.scm and the
> adw1-demo.scm

I have not run adw1-demo.scm successfully, because the modules it needs
are not in the load path.  I guess this is the same small issue.

Regards,
Florian

[1] Guix bug https://issues.guix.gnu.org/48907



^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-04-30 17:51         ` pelzflorian (Florian Pelz)
@ 2024-05-01  0:51           ` David Pirotte
  2024-05-01  8:17             ` pelzflorian (Florian Pelz)
  2024-05-02 18:50             ` pelzflorian (Florian Pelz)
  2024-05-03  0:17           ` David Pirotte
  1 sibling, 2 replies; 30+ messages in thread
From: David Pirotte @ 2024-05-01  0:51 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: guile-user

[-- Attachment #1: Type: text/plain, Size: 5729 bytes --]

Hello Florian,

> To develop with G-golf and GTK as in G-Golf’
> examples/adw-1/hello-world.scm or examples/gtk-4/hello-world.scm, the
> Guix commands must (at the time of writing) be used with the
> “--no-grafts” option, because G-Golf first when loading runs
> g_typelib_symbol on GdkPixbuf functions from Guix’ normal gdk-pixbuf
> package, but later when it presents the GTK window, GTK tries to load
> GdkPixbuf functions from a mostly identical replacement gdk-pixbuf
> package ...

Wow :) - A bit scary!

	fwiw, g-golf doesn't load/import/invoke/call nor the GdkPixbuf
	typelib, nor any of its functions/methods 'on its own', nor
	does any example, this occurs as part of the Gtk/Gdk/Gsk
	'engine' - it is not g-golf that 'runs g_typelib_symbol on
	GdkPixbuf functions;

Fwiw, debian 'generally' has two pkg for 'those situations', one with
the library itself and one for the debug symbols:

	david@... ~ 1 $ lpkg gdk-pixbuf
        ii  libgdk-pixbuf-2.0-0:amd64                                2.42.10+dfsg-3+b3                        amd64        GDK Pixbuf library
        ii  libgdk-pixbuf-2.0-0-dbgsym:amd64                         2.42.10+dfsg-3+b3                        amd64        debug symbols for libgdk-pixbuf-2.0-0
        ii  libgdk-pixbuf-2.0-dev:amd64                              2.42.10+dfsg-3+b3                        amd64        GDK Pixbuf library (development files)
        ii  libgdk-pixbuf-xlib-2.0-0:amd64                           2.40.2-3+b2                              amd64        GDK Pixbuf library (deprecated Xlib integration)
        ii  libgdk-pixbuf-xlib-2.0-dev:amd64                         2.40.2-3+b2                              amd64        GDK Pixbuf library (development files)
        ii  libgdk-pixbuf2.0-0:amd64                                 2.40.2-3+b2                              amd64        GDK Pixbuf library (transitional package)
        ii  libgdk-pixbuf2.0-bin                                     2.42.10+dfsg-3+b3                        amd64        GDK Pixbuf library (thumbnailer)
        ii  libgdk-pixbuf2.0-common                                  2.42.10+dfsg-3                           all          GDK Pixbuf library - data files
        ii  libgdk-pixbuf2.0-dev:amd64                               2.40.2-3+b2                              amd64        GDK Pixbuf library (transitional development files)
        ii  libgdk-pixbuf2.0-doc         

	[ did paste the all list of *gdk-pixbuf* pkgs just in case, but
	[ i was refering to the two first listed pkgs in my comment ofc ...

> If a G-Golf using GTK app were to be packaged for Guix, the package
> would have to use tricks to reference GTK’s gdk-pixbuf package and not
> normal gdk-pixbuf.  (Guix only has one G-Golf app packaged currently,
> the nomad web browser, which is broken in current Guix.)

You (the guix team) should fix Guix, not the g-golf app(s).

> The second issue is the vfuncs when running
> examples/gtk-4/drawing-widget.scm.  This segfaults at
> gtk_widget_snapshot_child when run.

But why (does it works fine on debian (and other distros) and fails on
guix (it fails on homebrew as well, fwiw)), is the question - Again,
g-golf doesn't call gtk_widget_snapshot_child 'on its own', this occurs
as part of the upstream [Gsk] snapshot implementation ... so this
particular method is called by the gobject/gtk[gsk actually] engine,
not g-golf - g-golf 'merely' installs the snapshot closure pointer in the
derived class it defines.

>  Similarly examples/gtk-4/peg-solitaire.scm segfaults at
> gtk_image_set_from_paintable called from g_callable_info_invoke.

It probably is a different bug, the peg-solitaire does call set-from-paintable,
we can(should) probably separate this from the vfunc related bug,
though the peg-solitare also define vfunc (it has to ...)

> segfaults at least with guile and guile-next Guile versions 3.0.9 and
> 3.0.9-0.db7efa5.

this has nothing to do with guile - fwiw, it should even work with
guile 2.0.14

>  I do not understand the cause or the vfunc implementation in
> G-Golf’s g-golf/hl-api/vfunc.scm file.

Please read the doc, follow the upstream link(s) proposed, and let me
know if there is still something you do not understand after done so:

	https://www.gnu.org/software/g-golf/manual/html_node/VFunc-Alley.html
	
> I will try to compare it with Vala-generated C code and try to make
> it fail similarly.

What about pygobject? Not familiar with Vala, but i am familiar with
some of the pygobject code, and if necessary, i can ask for some help in
#introspection (on matrix, not irc anymore).

> examples/gtk-4/simple-paintable.scm fails at (add-to-load-path
> (dirname (current-filename)).  I have not yet spent time to debug
> this one further.

It needs to do so to in order to import the (nuclear-icon) module,
which sits next to ... but that module calls define-vfunc, so we should
first and above all fix the define-vfunc problem in guix, and for this
we should use the examples/gtk-4/drawing-widget.scm, which is 'dead
simple'.

> I have not run adw1-demo.scm successfully, because the modules it
> needs are not in the load path.  I guess this is the same small issue.

Definitely, it needs to find all its modules ... i wonder why (dirname
(current-filename)) works for debian and fails for guix (?) - Any other
projects ever report this?

In conclusion, my recommendations:

1-	fix guix to have one gdk-pixbuf module
2-	let's try to fix the vfunc problem in guix, using the
	examples/gtk-4/drawing-widget.scm ... or some even easier vfunc
	test code i could write if necessary

Thanks,
David






[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-01  0:51           ` David Pirotte
@ 2024-05-01  8:17             ` pelzflorian (Florian Pelz)
  2024-05-07  1:39               ` David Pirotte
  2024-05-02 18:50             ` pelzflorian (Florian Pelz)
  1 sibling, 1 reply; 30+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-05-01  8:17 UTC (permalink / raw)
  To: David Pirotte; +Cc: guile-user

Hello David,

David Pirotte <david@altosw.be> writes:
> fwiw, g-golf doesn't load/import/invoke/call nor the GdkPixbuf
> typelib, nor any of its functions/methods 'on its own', nor
> does any example, this occurs as part of the Gtk/Gdk/Gsk
> 'engine' - it is not g-golf that 'runs g_typelib_symbol on
> GdkPixbuf functions;

I had not known that g-golf does not call g_typelib_symbol.  I will
have to read more what calls it initially.

The initial calls are to a GdkPixbuf path listed in environment
variables, later calls are to a GdkPixbuf path referenced in the files
that are part of GTK.  Yes, Guix should make it so the two are the same.

> Fwiw, debian 'generally' has two pkg for 'those situations', one with
> the library itself and one for the debug symbols:

Guix does the same, but for GTK, it runs a different GdkPixbuf build
entirely without debug symbols, with different build steps, therefore a
different hash, therefore a different file path.  Guix has bug#48907
filed, because debug symbols do not work, that Guix should not create
two paths or that debug symbols should work despite Guix doing that.

> You (the guix team) should fix Guix, not the g-golf app(s).

Yes.

>> The second issue is the vfuncs when running
>> examples/gtk-4/drawing-widget.scm.  This segfaults at
>> gtk_widget_snapshot_child when run.

This I will investigate firdy.

> […]
> What about pygobject?

pygobject GTK3 examples are working.  I will experiment and try to write
Vala/C code that breaks now.

> 1-	fix guix to have one gdk-pixbuf module
> 2-	let's try to fix the vfunc problem in guix, using the
> 	examples/gtk-4/drawing-widget.scm ... or some even easier vfunc
> 	test code i could write if necessary

I will look at 2 in the next days.

Regards,
Florian



^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-01  0:51           ` David Pirotte
  2024-05-01  8:17             ` pelzflorian (Florian Pelz)
@ 2024-05-02 18:50             ` pelzflorian (Florian Pelz)
  2024-05-02 21:57               ` David Pirotte
  1 sibling, 1 reply; 30+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-05-02 18:50 UTC (permalink / raw)
  To: David Pirotte; +Cc: guile-user

Hi David.  I’m trying to find the true error location.  Could you tell
me if, when you run such commands in guile in your Debian setup, you
get similar output?  First with tracepoint:


scheme@(guile-user)> (load "/home/florian/src/g-golf/examples/gtk-4/drawing-widget.scm")                             
scheme@(guile-user)> ,tracepoint (@@ (g-golf hl-api closure) g-closure-marshal)                                      
Trap 0: Tracepoint at #<procedure g-closure-marshal (g-closure return-val n-param param-vals invocation-hint marshal-data)>.
scheme@(guile-user)> (main '("guile"))
Trap 0: (g-closure-marshal #<pointer 0x1b9defc0> #<pointer 0x0> 1 #<pointer?> ?)

(guile:8143): Gtk-WARNING **: 20:34:10.905: Unable to acquire the address of the accessibility bus: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files. If you are attempting to run GTK without a11y support, GTK_A11Y should be set to 'none'.
Trap 0: no values
Segmentation fault


Then with break:

scheme@(guile-user)> (load "/home/florian/src/g-golf/examples/gtk-4/drawing-widget.scm")                             
scheme@(guile-user)> ,break (@@ (g-golf hl-api closure) g-closure-marshal)                                           
Trap 0: Breakpoint at #<procedure g-closure-marshal (g-closure return-val n-param param-vals invocation-hint marshal-data)>.
scheme@(guile-user)> (main '("guile"))
Trap 0: Breakpoint at #<procedure g-closure-marshal (g-closure return-val n-param param-vals invocation-hint marshal-data)>
Entering a new prompt.  Type `,bt' for a backtrace or `,q' to continue.
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93c092a0 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93c0e1a0 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93c200e0 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93c2bdb0 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93c2f600 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93c38000 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93c4ba80 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93c51530 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93c67f70 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93c77c30 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93c82ee0 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93c90fc0 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93c90320 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93c9e480 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93ca7940 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93cb9420 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93ccaad0 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93cd68a0 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93cddab0 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93cf9a30 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93d022e0 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93d087e0 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93d1d9a0 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93d32a40 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93d3b310 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93d4a6c0 g-closure-marshal>
scheme@(guile-user) [1]> ,next

(guile:9520): Gtk-WARNING **: 20:46:01.854: Unable to acquire the address of the accessibility bus: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files. If you are attempting to run GTK without a11y support, GTK_A11Y should be set to 'none'.
Step into #<frame ffff93d50640 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Step into #<frame ffff93d690f0 g-closure-marshal>
scheme@(guile-user) [1]> ,next
Segmentation fault

Regards,
Florian



^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-02 18:50             ` pelzflorian (Florian Pelz)
@ 2024-05-02 21:57               ` David Pirotte
  2024-05-03  5:00                 ` David Pirotte
  2024-05-03 11:35                 ` pelzflorian (Florian Pelz)
  0 siblings, 2 replies; 30+ messages in thread
From: David Pirotte @ 2024-05-02 21:57 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: guile-user

[-- Attachment #1: Type: text/plain, Size: 1293 bytes --]

Hi Florian,

> Hi David.  I’m trying to find the true error location.

The true error location was given by the gdb backtrace, the
gtk-widget-snapshot-child call, presumably with a bad pointer or so ...

Could you please upload a full gdb backtrace somewhere tor-friendly
(and zero javascript), so i can look at it, thanks.

>  Could you tell  me if, when you run such commands in guile in your
> Debian setup, you get similar output?  First with tracepoint:

With all due respect, this will get you nowhere, please upload the full
gdb backtrace ... thanks

> ...
> (guile:8143): Gtk-WARNING **: 20:34:10.905: Unable to acquire the
> address of the accessibility bus:
> ...

Unlike you said in another mail, this can definitely be solved, please
talk to the guix gnome team, upstream devs if necessary, compare with
what other distro do, use the gnome-calendar to track and fix this
problem ... not fundamental, but you'll learn on the way to fix this,
and those warnings are quite annoying, not to mention that they
scare your (Guix) users.

Meanwhile, can you try:

	cd /your/path/to//examples/gtk-4
	export GTK_A11Y=none
	./drawing-widget.scm

and see if that suppresses the warning as suggested?

Thanks,
David

ps:	what is your guix host distro?

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-04-30 17:51         ` pelzflorian (Florian Pelz)
  2024-05-01  0:51           ` David Pirotte
@ 2024-05-03  0:17           ` David Pirotte
  1 sibling, 0 replies; 30+ messages in thread
From: David Pirotte @ 2024-05-03  0:17 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: guile-user

[-- Attachment #1: Type: text/plain, Size: 3602 bytes --]

Hi Florian,

> ...
> examples/gtk-4/simple-paintable.scm fails at (add-to-load-path
> (dirname (current-filename)).  I have not yet spent time to debug
> this one further.

So we can make progress, till you find why (current-filename) fails -
note that it is a syntax, not a procedure, and the doc clearly state
that it returns #f "... when this information is not available." - but
i wonder why "this information" is available in other distro and not
in guix, for the same example code i mean?

Meanwhile, so we can make progress, could you manually patch this
example to set the path and try again:

	1-	you need a patched version of guile-cairo

	"... G-Golf actually requires a patched version of guile-cairo
	that contains the following new interface (which is not in
	guile-cairo 1.11.2): cairo-pointer->context."

	see if you have or update your guile-cairo to
	commit 30da459d7a4380174ff243b1560d5512a4bca86e

It should then segfault as well, since it defines two vfunc
methods, let's see ...

> I have not run adw1-demo.scm successfully, because the modules it
> needs are not in the load path.  I guess this is the same small issue.

Dito, please manually update the path and try again, thanks - the
adw1-demo extensively use (the) GtkWidget template(s) (mechanism), no
other example does, so far ... we need to check and possibly debug this
in Guix as well ... the sooner the better:

	you'll need to update all occurrences of (current-filename),
	quite a few, one in the 'main' adw1-demo.scm file, one or two
	(depending) in all scm files in the adw1-demo subdir [1]

Ideally, you'd do that automatically ofc, using the guix machinery
to achieve those little but fundamental changes.

While at it :), let me add the ideally as well, Guix should define a
(separate) g-golf.scm module/file and this module should contain the
following pkg defs:

	g-golf
	[ g-golf-doc 		- possibly a separate pkg as well
	g-golf-gtk4-examples
	g-golf-adw1-examples
	...				- other examples to come

It is very important, in distros, that g-golf be separate from its
examples, because g-golf itself only depends on automake, makeinfo,
glib-2.0, gobject-2.0, gobject-introspection-1.0, a C compiler and guile ofc.

G-Golf can indeed import typelibs that do not depend on gtk4, adwaita
...and allow to perform many other things then 'just' GUI ...

Cheers,
David

[1]	sfind current-filename

./adw1-demo.scm: (dirname (current-filename)))
./adw1-demo/welcome.scm:  #:template (string-append (dirname (current-filename))
./adw1-demo/style-classes-demo-dialog.scm:  #:template (string-append (dirname (current-filename))
./adw1-demo/carousel.scm:  #:template (string-append (dirname (current-filename))
./adw1-demo/animations.scm:  #:template (string-append (dirname (current-filename))
./adw1-demo/clamp.scm:  #:template (string-append (dirname (current-filename))
./adw1-demo/window.scm:  #:template (string-append (dirname (current-filename))
./adw1-demo/window.scm:  (let* ((cwd (dirname (current-filename)))
./adw1-demo/style-classes.scm:  #:template (string-append (dirname (current-filename))
./adw1-demo/dialogs.scm:  #:template (string-append (dirname (current-filename))
./adw1-demo/navigation-view.scm:  #:template (string-append (dirname (current-filename))
./adw1-demo/preferences.scm:  #:template (string-append (dirname (current-filename))
./adw1-demo/navigation-view-demo-dialog.scm:  #:template (string-append (dirname (current-filename))
./adw1-demo/lists.scm:  #:template (string-append (dirname (current-filename))

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-02 21:57               ` David Pirotte
@ 2024-05-03  5:00                 ` David Pirotte
  2024-05-03 11:35                 ` pelzflorian (Florian Pelz)
  1 sibling, 0 replies; 30+ messages in thread
From: David Pirotte @ 2024-05-03  5:00 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: guile-user

[-- Attachment #1: Type: text/plain, Size: 4026 bytes --]

Hi Florian,

> >  Could you tell  me if, when you run such commands in guile in your
> > Debian setup, you get similar output?  First with tracepoint:  

> With all due respect, this will get you nowhere, please upload the
> full gdb backtrace ... thanks

I patched the drawing-widget example so users may pass a -d or --debug
option, which triggers the setting of the %debug parameter.

This will track (some of the) g-golf (engine) calls 'only', so in this
particular situation that it segfault (in guix) upon a gtk snapshot
engine call, i probably will still very much need you to upload the
full gdb backtrace.

But it will at least give you some useful info on what's going on
'internally' - and who knows, might also give me some idea to further
investigate the problem ... tracking those calls is also a nice way to
learn about some g-golf internals ....

I pushed the patch to the devel branch, commit
8fbc8c27774986b4b5ad09a6545698b3e3ee1812, so, could either grab the
latest devel branch version, or simply grab the latest version of the example 

	https://git.savannah.gnu.org/cgit/g-golf.git/tree/examples/gtk-4/drawing-widget.scm?h=devel

then try (as shown below) and post the result here ...

Thanks,
David

Here is a debian session, passing the option at start-up, till i close
the window:

GNU Guile 3.0.9.179-8cabb
Copyright (C) 1995-2024 Free Software Foundation, Inc.
...

	[ given your guile session is in the appropriate directory

scheme@(guile-user)> (load "drawing-widget.scm")
scheme@(guile-user)> (main '("-d"))
;; g-application-run 
;;          application: #<<gtk-application> 7efed470ab10> 
;;                 argc: 0 
;;                 argv: () 
;; gtk-window-set-child 
;;               window: #<<gtk-application-window> 7efed470e270> 
;;                child: #<<drawing-widget> 7efed470e020> 
;; gtk-window-present 
;;               window: #<<gtk-application-window> 7efed470e270> 
;; g-golf-callback-closure-marshal 
;;   snapshot 
;;               widget: #<<drawing-widget> 7efed470e020> 
;;             snapshot: #<<gtk-snapshot> 7efed471b1f0> 
;; gtk-widget-get-width 
;;               widget: #<<drawing-widget> 7efed470e020> 
;; gtk-widget-get-height 
;;               widget: #<<drawing-widget> 7efed470e020> 
;; graphene-rect-alloc 
;; graphene-rect-init 
;;                 rect: #<pointer 0x5633517e0080> 
;;                    x: 0 
;;                    y: 0 
;;                width: 160 
;;               height: 283/2 
;; gtk-snapshot-append-color 
;;             snapshot: #<<gtk-snapshot> 7efed471b1f0> 
;;                color: (0.93 0.08 0.08 1.0) 
;;               bounds: #<pointer 0x5633517e0080> 
;; graphene-rect-alloc 
;; graphene-rect-init 
;;                 rect: #<pointer 0x5633517d8ae0> 
;;                    x: 160 
;;                    y: 0 
;;                width: 160 
;;               height: 283/2 
;; gtk-snapshot-append-color 
;;             snapshot: #<<gtk-snapshot> 7efed471b1f0> 
;;                color: (0.18 0.8 0.44 1.0) 
;;               bounds: #<pointer 0x5633517d8ae0> 
;; graphene-rect-alloc 
;; graphene-rect-init 
;;                 rect: #<pointer 0x563351803ec0> 
;;                    x: 0 
;;                    y: 283/2 
;;                width: 160 
;;               height: 283/2 
;; gtk-snapshot-append-color 
;;             snapshot: #<<gtk-snapshot> 7efed471b1f0> 
;;                color: (0.99 0.74 0.29 1.0) 
;;               bounds: #<pointer 0x563351803ec0> 
;; graphene-rect-alloc 
;; graphene-rect-init 
;;                 rect: #<pointer 0x563351804520> 
;;                    x: 160 
;;                    y: 283/2 
;;                width: 160 
;;               height: 283/2 
;; gtk-snapshot-append-color 
;;             snapshot: #<<gtk-snapshot> 7efed471b1f0> 
;;                color: (0.16 0.5 0.73 1.0) 
;;               bounds: #<pointer 0x563351804520> 
;; status 0 
$5 = 0
scheme@(guile-user)> 

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-02 21:57               ` David Pirotte
  2024-05-03  5:00                 ` David Pirotte
@ 2024-05-03 11:35                 ` pelzflorian (Florian Pelz)
  2024-05-04  5:59                   ` David Pirotte
  1 sibling, 1 reply; 30+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-05-03 11:35 UTC (permalink / raw)
  To: David Pirotte; +Cc: guile-user

David Pirotte <david@altosw.be> writes:
>> Hi David.  I’m trying to find the true error location.
>
> The true error location was given by the gdb backtrace, the
> gtk-widget-snapshot-child call, presumably with a bad pointer or so ...

Hmm my assumption was that all callbacks are broken, not vfuncs
specifically, which is why I tried in my e-mail yesterday to tracepoint
g-closure-marshal in Guile and was surprised by that it once said “Trap
0: (g-closure-marshal #<pointer 0x1b9defc0> #<pointer 0x0> 1 #<pointer?>
?)” before the crash just said “Trap 0: no values”.

The GTK_A11Y warning I can easily fix by exporting GTK_A11Y=none, but it
was interesting that the crash happens two function calls away from
where the warning is printed.


> Could you please upload a full gdb backtrace somewhere tor-friendly
> (and zero javascript), so i can look at it, thanks.

On a x86_64 GNOME laptop on the distro Guix System on the g-golf devel
branch with (main '("guile" "--debug")):

#0  0x00007fce2f0022d0 in ?? ()
#1  0x00007fce22e7c3dc in ?? () from /gnu/store/s0bzhwa0n6kvlsfzd6z8nxmm39g39gck-gtk-4.12.3/lib/libgtk-4.so.1
#2  0x00007fce22e7efa4 in ?? () from /gnu/store/s0bzhwa0n6kvlsfzd6z8nxmm39g39gck-gtk-4.12.3/lib/libgtk-4.so.1
#3  0x00007fce22e8ae13 in gtk_widget_snapshot_child () from /gnu/store/s0bzhwa0n6kvlsfzd6z8nxmm39g39gck-gtk-4.12.3/lib/libgtk-4.so.1
#4  0x00007fce22e8ae9e in ?? () from /gnu/store/s0bzhwa0n6kvlsfzd6z8nxmm39g39gck-gtk-4.12.3/lib/libgtk-4.so.1
#5  0x00007fce22e7c79e in ?? () from /gnu/store/s0bzhwa0n6kvlsfzd6z8nxmm39g39gck-gtk-4.12.3/lib/libgtk-4.so.1
#6  0x00007fce22e7efa4 in ?? () from /gnu/store/s0bzhwa0n6kvlsfzd6z8nxmm39g39gck-gtk-4.12.3/lib/libgtk-4.so.1
#7  0x00007fce22e8a6eb in ?? () from /gnu/store/s0bzhwa0n6kvlsfzd6z8nxmm39g39gck-gtk-4.12.3/lib/libgtk-4.so.1
#8  0x00007fce22e918c5 in ?? () from /gnu/store/s0bzhwa0n6kvlsfzd6z8nxmm39g39gck-gtk-4.12.3/lib/libgtk-4.so.1
#9  0x00007fce22ffde94 in ?? () from /gnu/store/s0bzhwa0n6kvlsfzd6z8nxmm39g39gck-gtk-4.12.3/lib/libgtk-4.so.1
#10 0x00007fce293e75b9 in _g_closure_invoke_va (closure=closure@entry=0x38c9de0, return_value=return_value@entry=0x7ffca25ce230, instance=instance@entry=0x179ef90, args=args@entry=0x7ffca25ce3b8, n_params=n_params@entry=1, param_types=param_types@entry=0x1763e30) at ../glib-2.78.0/gobject/gclosure.c:895
#11 0x00007fce293fa52e in signal_emit_valist_unlocked (instance=instance@entry=0x179ef90, signal_id=signal_id@entry=38, detail=detail@entry=0, var_args=var_args@entry=0x7ffca25ce3b8) at ../glib-2.78.0/gobject/gsignal.c:3516
#12 0x00007fce294003c5 in g_signal_emit_valist (instance=0x179ef90, signal_id=38, detail=0, var_args=var_args@entry=0x7ffca25ce3b8) at ../glib-2.78.0/gobject/gsignal.c:3355
#13 0x00007fce29400472 in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../glib-2.78.0/gobject/gsignal.c:3675
#14 0x00007fce230746ca in ?? () from /gnu/store/s0bzhwa0n6kvlsfzd6z8nxmm39g39gck-gtk-4.12.3/lib/libgtk-4.so.1
#15 0x00007fce293e75b9 in _g_closure_invoke_va (closure=closure@entry=0x191b470, return_value=return_value@entry=0x0, instance=instance@entry=0x191b240, args=args@entry=0x7ffca25ce738, n_params=n_params@entry=0, param_types=param_types@entry=0x0) at ../glib-2.78.0/gobject/gclosure.c:895
#16 0x00007fce293fb17b in signal_emit_valist_unlocked (instance=instance@entry=0x191b240, signal_id=signal_id@entry=55, detail=detail@entry=0, var_args=var_args@entry=0x7ffca25ce738) at ../glib-2.78.0/gobject/gsignal.c:3516
#17 0x00007fce294003c5 in g_signal_emit_valist (instance=0x191b240, signal_id=55, detail=0, var_args=var_args@entry=0x7ffca25ce738) at ../glib-2.78.0/gobject/gsignal.c:3355
#18 0x00007fce29400472 in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../glib-2.78.0/gobject/gsignal.c:3675
#19 0x00007fce230639e0 in ?? () from /gnu/store/s0bzhwa0n6kvlsfzd6z8nxmm39g39gck-gtk-4.12.3/lib/libgtk-4.so.1
#20 0x00007fce2948e8eb in g_timeout_dispatch (user_data=<optimized out>, callback=<optimized out>, source=0x3935fe0) at ../glib-2.78.0/glib/gmain.c:5121
#21 g_timeout_dispatch (source=0x3935fe0, callback=<optimized out>, user_data=<optimized out>) at ../glib-2.78.0/glib/gmain.c:5099
#22 0x00007fce2948acf3 in g_main_dispatch (context=context@entry=0x1816860) at ../glib-2.78.0/glib/gmain.c:3476
#23 0x00007fce2948dc17 in g_main_context_dispatch_unlocked (context=0x1816860) at ../glib-2.78.0/glib/gmain.c:4284
#24 g_main_context_iterate_unlocked (context=context@entry=0x1816860, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib-2.78.0/glib/gmain.c:4349
#25 0x00007fce2948e1ff in g_main_context_iteration (context=context@entry=0x1816860, may_block=may_block@entry=1) at ../glib-2.78.0/glib/gmain.c:4414
#26 0x00007fce292c964d in g_application_run (application=0x1815250, argc=<optimized out>, argv=<optimized out>) at ../glib-2.78.0/gio/gapplication.c:2577
#27 0x00007fce30811052 in ffi_call_unix64 () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#28 0x00007fce3080fc85 in ffi_call_int () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#29 0x00007fce3081068e in ffi_call () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#30 0x00007fce295849c7 in g_callable_info_invoke () from /gnu/store/vycyjb00dcqwjpn45as8jhrw4apv4r5n-gobject-introspection-1.73.1/lib/libgirepository-1.0.so
#31 0x00007fce29585f62 in g_function_info_invoke () from /gnu/store/vycyjb00dcqwjpn45as8jhrw4apv4r5n-gobject-introspection-1.73.1/lib/libgirepository-1.0.so
#32 0x00007fce30811052 in ffi_call_unix64 () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#33 0x00007fce3080fc85 in ffi_call_int () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#34 0x00007fce3081068e in ffi_call () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#35 0x00007fce3096dd37 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#36 0x00007fce3095df55 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#37 0x00007fce30952b9d in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#38 0x00007fce3095ddb5 in scm_call_n () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#39 0x00007fce308c8977 in scm_primitive_eval () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#40 0x00007fce308ce846 in scm_eval () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#41 0x00007fce3092d3e6 in scm_shell () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#42 0x00007fce308df8cc in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#43 0x00007fce308c6e1a in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#44 0x00007fce30950390 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#45 0x00007fce3095ddb5 in scm_call_n () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#46 0x00007fce308c85ca in scm_call_2 () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#47 0x00007fce3096f092 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#48 0x00007fce3094ae1f in scm_c_catch () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#49 0x00007fce308c9396 in scm_c_with_continuation_barrier () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#50 0x00007fce3094a049 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#51 0x00007fce3082d7fa in GC_call_with_stack_base () from /gnu/store/1w1r6r56z9lhg8ghcb7lxss6mkn7d5l1-libgc-8.2.2/lib/libgc.so.1
#52 0x00007fce309443f8 in scm_with_guile () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#53 0x00007fce308e88e5 in scm_boot_guile () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#54 0x00000000004010f7 in ?? ()
#55 0x00007fce303551f7 in __libc_start_call_main () from /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/libc.so.6
#56 0x00007fce303552ac in __libc_start_main_impl () from /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/libc.so.6
#57 0x0000000000401171 in ?? ()


(I do not understand why it does not see GTK debug info.)

On my aarch64 rock64 the complete backtrace is useless:

(gdb) bt
#0  0x0000ffff8066e278 in ?? ()
#1  0x000000001b976640 in ?? ()
Backtrace stopped: not enough registers or memory available to unwind
further


Your next e-mail:

David Pirotte <david@altosw.be> writes:
> I patched the drawing-widget example so users may pass a -d or --debug
> option, which triggers the setting of the %debug parameter.
>
> This will track (some of the) g-golf (engine) calls 'only', so in this
> particular situation that it segfault (in guix) upon a gtk snapshot
> engine call, i probably will still very much need you to upload the
> full gdb backtrace.
>
> But it will at least give you some useful info on what's going on
> 'internally' - and who knows, might also give me some idea to further
> investigate the problem ... tracking those calls is also a nice way to
> learn about some g-golf internals ....
>[…]
> scheme@(guile-user)> (load "drawing-widget.scm")
> scheme@(guile-user)> (main '("-d"))
> ;; g-application-run 
> ;;          application: #<<gtk-application> 7efed470ab10> 
> ;;                 argc: 0 
> ;;                 argv: () 
> ;; gtk-window-set-child 
> ;;               window: #<<gtk-application-window> 7efed470e270> 
> ;;                child: #<<drawing-widget> 7efed470e020> 
> ;; gtk-window-present 
> ;;               window: #<<gtk-application-window> 7efed470e270> 
> ;; g-golf-callback-closure-marshal 
> ;;   snapshot 
> ;;               widget: #<<drawing-widget> 7efed470e020> 
> ;;             snapshot: #<<gtk-snapshot> 7efed471b1f0> 
> ;; gtk-widget-get-width 
>[…]

I get only

scheme@(guile-user)> (main '("guile" "--debug"))
;; g-application-run 
;;          application: #<<gtk-application> 7fce23e673b0> 
;;                 argc: 0 
;;                 argv: () 
;; gtk-window-set-child 
;;               window: #<<gtk-application-window> 7fce23e730c0> 
;;                child: #<<drawing-widget> 7fce23e7bd10> 
;; gtk-window-present 
;;               window: #<<gtk-application-window> 7fce23e730c0> 

There it stops for me.  This is similar to what I get with patch

diff --git a/g-golf/init.scm b/g-golf/init.scm
index 5f64297..f1774b8 100644
--- a/g-golf/init.scm
+++ b/g-golf/init.scm
@@ -47,8 +47,8 @@
 
 (define %libg-golf (dynamic-link "libg-golf"))
 
-(define %debug (make-parameter #f))
-(define %iface-vfunc-warnings (make-parameter #f))
+(define %debug (make-parameter #t))
+(define %iface-vfunc-warnings (make-parameter #t))
 
 ;; The AdwMessageDialog class offers two ways to capture the user
 ;; response: (1) the traditional dialog 'response signal callback and

base-commit: 482c0693160fba5f4a29214028dc3e9c276693da
-- 
2.41.0



Next e-mail:

David Pirotte <david@altosw.be> writes:
> Hi Florian,
>
>> ...
>> examples/gtk-4/simple-paintable.scm fails at (add-to-load-path
>> (dirname (current-filename)).  I have not yet spent time to debug
>> this one further.
>
> So we can make progress, till you find why (current-filename) fails -
> note that it is a syntax, not a procedure, and the doc clearly state
> that it returns #f "... when this information is not available." - but
> i wonder why "this information" is available in other distro and not
> in guix, for the same example code i mean?


Without updating:

scheme@(guile-user)> (load "adw1-demo.scm")
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;;       or pass the --no-auto-compile argument to disable.
;;; compiling /home/florian/src/g-golf/examples/adw-1/adw1-demo.scm
;;; compiling /home/florian/src/g-golf/examples/adw-1/adw1-demo/window.scm
;;; WARNING: compilation of /home/florian/src/g-golf/examples/adw-1/adw1-demo/window.scm failed:
;;; In procedure scm_to_utf8_stringn: Wrong type argument in position 1 (expecting string): #f
;;; WARNING: compilation of /home/florian/src/g-golf/examples/adw-1/adw1-demo.scm failed:
;;; In procedure scm_to_utf8_stringn: Wrong type argument in position 1 (expecting string): #f
scheme@(guile-user)> (main '("guile"))
ice-9/boot-9.scm:1685:16: In procedure raise-exception:
Unbound variable: show-window

Entering a new prompt.  Type `,bt' for a backtrace or `,q' to continue.
scheme@(guile-user) [1]> 

>
> Meanwhile, so we can make progress, could you manually patch this
> example to set the path and try again:
>
> 	1-	you need a patched version of guile-cairo
>
> 	"... G-Golf actually requires a patched version of guile-cairo
> 	that contains the following new interface (which is not in
> 	guile-cairo 1.11.2): cairo-pointer->context."
>
> 	see if you have or update your guile-cairo to
> 	commit 30da459d7a4380174ff243b1560d5512a4bca86e
>

I did update to this commit now.


> It should then segfault as well, since it defines two vfunc
> methods, let's see ...

Yes, although in gtk_image_set_from_paintable:

Thread 1 "guile" received signal SIGSEGV, Segmentation fault.
0x00007f9aeb6052d0 in ?? ()
(gdb) bt
#0  0x00007f9aeb6052d0 in ?? ()
#1  0x00007f9ae4d8b8f0 in gtk_image_set_from_paintable () from /gnu/store/sq092kyxpn30dp16i85bgxrx18km3cq1-gtk-4.12.3/lib/libgtk-4.so.1
#2  0x00007f9aed8f9052 in ffi_call_unix64 () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#3  0x00007f9aed8f7c85 in ffi_call_int () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#4  0x00007f9aed8f868e in ffi_call () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#5  0x00007f9ae66c89c7 in g_callable_info_invoke () from /gnu/store/vycyjb00dcqwjpn45as8jhrw4apv4r5n-gobject-introspection-1.73.1/lib/libgirepository-1.0.so
#6  0x00007f9ae66c9f62 in g_function_info_invoke () from /gnu/store/vycyjb00dcqwjpn45as8jhrw4apv4r5n-gobject-introspection-1.73.1/lib/libgirepository-1.0.so
#7  0x00007f9aed8f9052 in ffi_call_unix64 () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#8  0x00007f9aed8f7c85 in ffi_call_int () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#9  0x00007f9aed8f868e in ffi_call () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#10 0x00007f9aeda55d37 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#11 0x00007f9aeda45f55 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#12 0x00007f9aeda3ab9d in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#13 0x00007f9aeda45db5 in scm_call_n () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#14 0x00007f9aed9c3e5a in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#15 0x00007f9aed8f8931 in ffi_closure_unix64_inner () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#16 0x00007f9aed8f91e8 in ffi_closure_unix64 () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#17 0x00007f9ae652b38f in g_closure_invoke (closure=0x8c9200, return_value=return_value@entry=0x0, n_param_values=n_param_values@entry=1, param_values=param_values@entry=0x7ffc87fa3790, invocation_hint=invocation_hint@entry=0x7ffc87fa3730) at ../glib-2.78.0/gobject/gclosure.c:832
#18 0x00007f9ae653db17 in signal_emit_unlocked_R (node=node@entry=0x7ffc87fa38c0, detail=detail@entry=0, instance=instance@entry=0x8c7e20, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffc87fa3790) at ../glib-2.78.0/gobject/gsignal.c:3980
#19 0x00007f9ae653f109 in signal_emit_valist_unlocked (instance=instance@entry=0x8c7e20, signal_id=signal_id@entry=8, detail=detail@entry=0, var_args=var_args@entry=0x7ffc87fa3998) at ../glib-2.78.0/gobject/gsignal.c:3612
#20 0x00007f9ae65443c5 in g_signal_emit_valist (instance=0x8c7e20, signal_id=8, detail=0, var_args=var_args@entry=0x7ffc87fa3998) at ../glib-2.78.0/gobject/gsignal.c:3355
#21 0x00007f9ae6544472 in g_signal_emit (instance=instance@entry=0x8c7e20, signal_id=<optimized out>, detail=detail@entry=0) at ../glib-2.78.0/gobject/gsignal.c:3675
#22 0x00007f9ae640d113 in g_application_activate (application=application@entry=0x8c7e20) at ../glib-2.78.0/gio/gapplication.c:2316
#23 0x00007f9ae640d488 in g_application_real_local_command_line (application=0x8c7e20, arguments=0x7ffc87fa3ae0, exit_status=0x7ffc87fa3adc) at ../glib-2.78.0/gio/gapplication.c:1152
#24 0x00007f9ae640d5de in g_application_run (application=0x8c7e20, argc=<optimized out>, argv=<optimized out>) at ../glib-2.78.0/gio/gapplication.c:2546
#25 0x00007f9aed8f9052 in ffi_call_unix64 () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#26 0x00007f9aed8f7c85 in ffi_call_int () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#27 0x00007f9aed8f868e in ffi_call () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#28 0x00007f9ae66c89c7 in g_callable_info_invoke () from /gnu/store/vycyjb00dcqwjpn45as8jhrw4apv4r5n-gobject-introspection-1.73.1/lib/libgirepository-1.0.so
#29 0x00007f9ae66c9f62 in g_function_info_invoke () from /gnu/store/vycyjb00dcqwjpn45as8jhrw4apv4r5n-gobject-introspection-1.73.1/lib/libgirepository-1.0.so
#30 0x00007f9aed8f9052 in ffi_call_unix64 () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#31 0x00007f9aed8f7c85 in ffi_call_int () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#32 0x00007f9aed8f868e in ffi_call () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#33 0x00007f9aeda55d37 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#34 0x00007f9aeda45f55 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#35 0x00007f9aeda3ab9d in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#36 0x00007f9aeda45db5 in scm_call_n () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#37 0x00007f9aed9b0977 in scm_primitive_eval () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#38 0x00007f9aed9b6846 in scm_eval () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#39 0x00007f9aeda153e6 in scm_shell () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#40 0x00007f9aed9c78cc in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#41 0x00007f9aed9aee1a in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#42 0x00007f9aeda38390 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#43 0x00007f9aeda45db5 in scm_call_n () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#44 0x00007f9aed9b05ca in scm_call_2 () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#45 0x00007f9aeda57092 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#46 0x00007f9aeda32e1f in scm_c_catch () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#47 0x00007f9aed9b1396 in scm_c_with_continuation_barrier () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#48 0x00007f9aeda32049 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#49 0x00007f9aed9157fa in GC_call_with_stack_base () from /gnu/store/1w1r6r56z9lhg8ghcb7lxss6mkn7d5l1-libgc-8.2.2/lib/libgc.so.1
#50 0x00007f9aeda2c3f8 in scm_with_guile () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#51 0x00007f9aed9d08e5 in scm_boot_guile () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#52 0x00000000004010f7 in ?? ()
#53 0x00007f9aed43d1f7 in __libc_start_call_main () from /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/libc.so.6
#54 0x00007f9aed43d2ac in __libc_start_main_impl () from /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/libc.so.6
#55 0x0000000000401171 in ?? ()


> Ideally, you'd do that automatically ofc, using the guix machinery
> to achieve those little but fundamental changes.
>
> While at it :), let me add the ideally as well, Guix should define a
> (separate) g-golf.scm module/file and this module should contain the
> following pkg defs:
>
> 	g-golf
> 	[ g-golf-doc 		- possibly a separate pkg as well
> 	g-golf-gtk4-examples
> 	g-golf-adw1-examples
> 	...				- other examples to come
>
> It is very important, in distros, that g-golf be separate from its
> examples, because g-golf itself only depends on automake, makeinfo,
> glib-2.0, gobject-2.0, gobject-introspection-1.0, a C compiler and guile ofc.
>
> G-Golf can indeed import typelibs that do not depend on gtk4, adwaita
> ...and allow to perform many other things then 'just' GUI ...
>
> Cheers,
> David

Oh yes, it would be good to package examples for developers to look at
their package definitions.  And without downloading the g-golf source.
Then again, the g-golf source can be downloaded via Guix too.

florian@florianrock64 ~$ cd $(guix build -S guile-g-golf) 
florian@florianrock64 /gnu/store/3jwn5cxp3j39i0rf8cjwvrk6rynbk743-guile-g-golf-0.8.0-a.1-checkout$ 

For pygobject trying examples is intricate too:

$ cd src/
$ tar xvf $(guix build -S python-pygobject)
$ guix shell python python-gobject gtk+ gtksourceview@4 python-pycairo -- python3 examples/demo/demo.py 

Regards,
Florian



^ permalink raw reply related	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-03 11:35                 ` pelzflorian (Florian Pelz)
@ 2024-05-04  5:59                   ` David Pirotte
  2024-05-04 14:31                     ` pelzflorian (Florian Pelz)
  0 siblings, 1 reply; 30+ messages in thread
From: David Pirotte @ 2024-05-04  5:59 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: guile-user

[-- Attachment #1: Type: text/plain, Size: 2250 bytes --]

Hi Florian,

> > The true error location was given by the gdb backtrace, the
> > gtk-widget-snapshot-child call, presumably with a bad pointer or so
> > ...  

> Hmm my assumption was that all callbacks are broken, not vfuncs
> specifically ...

Very unlikely, but the important thing is to get a proper full
backtrace, as then there is no need to make assumptions ...

> The GTK_A11Y warning I can easily fix by exporting GTK_A11Y=none, but
> it was interesting that the crash happens two function calls away from
> where the warning is printed.

I can't make any useful deduction from the above, a warning is expected
here, till you (the guix team) fix it, let's set this env var, and
concentrate on the cause of the segfault ...


> On a x86_64 GNOME laptop on the distro Guix System on the g-golf devel
> branch with (main '("guile" "--debug")):

> ;;;

this gdb backtrace 'preamble' is, to me, useless as well

> On my aarch64 rock64 the complete backtrace is useless:

> (gdb) bt
> #0  0x0000ffff8066e278 in ?? ()
> #1  0x000000001b976640 in ?? ()

I won't be able to help you help Guix track this problem unless we get a
useful backtrace, so much as because i probably will need it to ask for
some help from upstream devs ...

Could you ask for some help from guix to produce it?

> Your next e-mail:

> I get only
> 
> scheme@(guile-user)> (main '("guile" "--debug"))
> ;; g-application-run 
> ;;          application: #<<gtk-application> 7fce23e673b0> 
> ;;                 argc: 0 
> ;;                 argv: () 
> ;; gtk-window-set-child 
> ;;               window: #<<gtk-application-window> 7fce23e730c0> 
> ;;                child: #<<drawing-widget> 7fce23e7bd10> 
> ;; gtk-window-present 
> ;;               window: #<<gtk-application-window> 7fce23e730c0> 

Yes, i did expect this and wanted to show you ... you don't see
any g-golf trace here because it fails in the gtk engine, as i
understood so far, before it can't find the derived class snapshot
vfunc.

David

ps:	you did not answer my quiz about your guix host distro - i
would like you to - at least temporarily - manually install g-golf
there and see if everything works fine ... Could you do that? thanks


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-04  5:59                   ` David Pirotte
@ 2024-05-04 14:31                     ` pelzflorian (Florian Pelz)
  2024-05-04 18:08                       ` pelzflorian (Florian Pelz)
  2024-05-04 21:39                       ` David Pirotte
  0 siblings, 2 replies; 30+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-05-04 14:31 UTC (permalink / raw)
  To: David Pirotte; +Cc: guile-user

Hi David, thank you for your continuing responses.  I will try to get a
backtrace with GTK debug symbols by patching Guix to add a debug output
to GTK, in the hope that I patch the right GTK.

However, my believe is that the error is in G-Golf
closures/callbacks/vfuncs (even though the hl-api tests do pass when run
by Guix build or manually), specifically when I run valgrind on guile
where I load and run drawing-widget.scm, it only shows errors from Boehm
GC (at least mostly false-positive) and from creating threads, but no
errors from GTK.  In particular there are errors in scm_c_make_vector,
probably false positive, but I will look at bytevectors this weekend now
(occurrences of bv in g-golf code).

I cannot tell you my host distro because there is none (there could be a
foreign distro, but I have none).  It is Guix System, that is Guix all
the way down.

To build G-Golf manually, I can and had patched the its g-golf/init.scm
to use /gnu/store/xxxxxxx/lib/libgirepository-1.0.so file names like the
guile-g-golf package at
<https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/guile-xyz.scm>
does, but it will not be useful.

Setting the GTK_A11Y env var does not make a difference (except the
warning is gone) and on my x86_64 GNOME setup there never is a warning
(although GTK_A11Y is unset, but d-bus is there).

Regards,
Florian



^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-04 14:31                     ` pelzflorian (Florian Pelz)
@ 2024-05-04 18:08                       ` pelzflorian (Florian Pelz)
  2024-05-04 22:11                         ` David Pirotte
  2024-05-04 22:23                         ` David Pirotte
  2024-05-04 21:39                       ` David Pirotte
  1 sibling, 2 replies; 30+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-05-04 18:08 UTC (permalink / raw)
  To: David Pirotte; +Cc: guile-user

"pelzflorian (Florian Pelz)" <pelzflorian@pelzflorian.de> writes:
> Hi David, thank you for your continuing responses.  I will try to get a
> backtrace with GTK debug symbols

I now managed to build gtk with a debug output and meson configure flag
"-Dc_args=-O0".

For drawing-widget.scm on x86_64, klass->snapshot looks high like a code
segment address but has a bogus disassembly.  Was it clobbered?  Should
klass->snapshot be a procedure calling drawing-widget.scm’s snapshot
procedure?  Probably I’m misinterpreting.

Thread 1 "guile" received signal SIGSEGV, Segmentation fault.
0x00007f67944012d0 in ?? ()
(gdb) bt
#0  0x00007f67944012d0 in ?? ()
#1  0x00007f678776812a in gtk_widget_create_render_node (widget=0x13adf70, snapshot=0x33c9460) at ../gtk-4.12.3/gtk/gtkwidget.c:11862
#2  0x00007f678776828b in gtk_widget_do_snapshot (widget=0x13adf70, snapshot=0x33c9460) at ../gtk-4.12.3/gtk/gtkwidget.c:11897
#3  0x00007f678776918a in gtk_widget_snapshot_child (widget=0x13bb310, child=0x13adf70, snapshot=0x33c9460) at ../gtk-4.12.3/gtk/gtkwidget.c:12318
#4  0x00007f6787750fd4 in gtk_widget_real_snapshot (widget=0x13bb310, snapshot=0x33c9460) at ../gtk-4.12.3/gtk/gtkwidget.c:756
#5  0x00007f67877680f8 in gtk_widget_create_render_node (widget=0x13bb310, snapshot=0x33c9460) at ../gtk-4.12.3/gtk/gtkwidget.c:11857
#6  0x00007f678776828b in gtk_widget_do_snapshot (widget=0x13bb310, snapshot=0x33c9460) at ../gtk-4.12.3/gtk/gtkwidget.c:11897
#7  0x00007f6787768343 in gtk_widget_snapshot (widget=0x13bb310, snapshot=0x33c9460) at ../gtk-4.12.3/gtk/gtkwidget.c:11919
#8  0x00007f678776844a in gtk_widget_render (widget=0x13bb310, surface=0x13c3e90, region=0x3390970) at ../gtk-4.12.3/gtk/gtkwidget.c:11951
#9  0x00007f6787777ca1 in surface_render (surface=0x13c3e90, region=0x3390970, widget=0x13bb310) at ../gtk-4.12.3/gtk/gtkwindow.c:4813
#10 0x00007f67879ad371 in _gdk_marshal_BOOLEAN__BOXEDv (closure=0x338ae70, return_value=0x7ffdd39838d0, instance=0x13c3e90, args=0x7ffdd3983a58, marshal_data=0x0, n_params=1, param_types=0x11e2dd0) at gdk/gdkmarshalers.c:130
#11 0x00007f678de7c5b9 in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#12 0x00007f678de8f52e in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#13 0x00007f678de953c5 in g_signal_emit_valist () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#14 0x00007f678de95472 in g_signal_emit () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#15 0x00007f6787a6a31c in gdk_surface_paint_on_clock (clock=0x1284c80, data=0x13c3e90) at ../gtk-4.12.3/gdk/gdksurface.c:1377
#16 0x00007f678de7c5b9 in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#17 0x00007f678de9017b in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#18 0x00007f678de953c5 in g_signal_emit_valist () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#19 0x00007f678de95472 in g_signal_emit () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#20 0x00007f6787a4cd15 in _gdk_frame_clock_emit_paint (frame_clock=0x1284c80) at ../gtk-4.12.3/gdk/gdkframeclock.c:708
#21 0x00007f6787a4ddf9 in gdk_frame_clock_paint_idle (data=0x1284c80) at ../gtk-4.12.3/gdk/gdkframeclockidle.c:632
#22 0x00007f678df238eb in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libglib-2.0.so.0
#23 0x00007f678df1fcf3 in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libglib-2.0.so.0
#24 0x00007f678df22c17 in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libglib-2.0.so.0
#25 0x00007f678df231ff in g_main_context_iteration () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libglib-2.0.so.0
#26 0x00007f678dd5e64d in g_application_run () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgio-2.0.so.0
#27 0x00007f6795260052 in ?? () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#28 0x00007f679525ec85 in ?? () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#29 0x00007f679525f68e in ffi_call () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#30 0x00007f678e0199c7 in g_callable_info_invoke () from /gnu/store/vycyjb00dcqwjpn45as8jhrw4apv4r5n-gobject-introspection-1.73.1/lib/libgirepository-1.0.so
#31 0x00007f678e01af62 in g_function_info_invoke () from /gnu/store/vycyjb00dcqwjpn45as8jhrw4apv4r5n-gobject-introspection-1.73.1/lib/libgirepository-1.0.so
#32 0x00007f6795260052 in ?? () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#33 0x00007f679525ec85 in ?? () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#34 0x00007f679525f68e in ffi_call () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#35 0x00007f67953bcd37 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#36 0x00007f67953acf55 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#37 0x00007f67953a1b9d in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#38 0x00007f67953acdb5 in scm_call_n () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#39 0x00007f6795317977 in scm_primitive_eval () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#40 0x00007f679531d846 in scm_eval () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#41 0x00007f679537c3e6 in scm_shell () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#42 0x00007f679532e8cc in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#43 0x00007f6795315e1a in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#44 0x00007f679539f390 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#45 0x00007f67953acdb5 in scm_call_n () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#46 0x00007f67953175ca in scm_call_2 () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#47 0x00007f67953be092 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#48 0x00007f6795399e1f in scm_c_catch () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#49 0x00007f6795318396 in scm_c_with_continuation_barrier () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#50 0x00007f6795399049 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#51 0x00007f679527c7fa in GC_call_with_stack_base () from /gnu/store/1w1r6r56z9lhg8ghcb7lxss6mkn7d5l1-libgc-8.2.2/lib/libgc.so.1
#52 0x00007f67953933f8 in scm_with_guile () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#53 0x00007f67953378e5 in scm_boot_guile () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#54 0x00000000004010f7 in ?? ()
#55 0x00007f6794da41f7 in __libc_start_call_main () from /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/libc.so.6
#56 0x00007f6794da42ac in __libc_start_main_impl () from /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/libc.so.6
#57 0x0000000000401171 in ?? ()
(gdb) frame 1
#1  0x00007f678776812a in gtk_widget_create_render_node (widget=0x13adf70, snapshot=0x33c9460) at ../gtk-4.12.3/gtk/gtkwidget.c:11862
11862	      klass->snapshot (widget, snapshot);
(gdb) list
11857	      klass->snapshot (widget, snapshot);
11858	      gtk_snapshot_pop (snapshot);
11859	    }
11860	  else
11861	    {
11862	      klass->snapshot (widget, snapshot);
11863	    }
11864	
11865	  gtk_css_style_snapshot_outline (&boxes, snapshot);
11866	
(gdb) print klass
$1 = (GtkWidgetClass *) 0x12f8df0
(gdb) print klass->snapshot
$2 = (void (*)(GtkWidget *, GtkSnapshot *)) 0x7f67944012d0
(gdb) frame 1
#1  0x00007f678776812a in gtk_widget_create_render_node (widget=0x13adf70, snapshot=0x33c9460) at ../gtk-4.12.3/gtk/gtkwidget.c:11862
11862	      klass->snapshot (widget, snapshot);
(gdb) print *klass
$3 = {parent_class = {g_type_class = {g_type = 19893504}, construct_properties = 0x12f8c10, constructor = 0x7f678de81570, set_property = 0x0, get_property = 0x0, dispose = 0x7f678775e2ff <gtk_widget_dispose>, 
    finalize = 0x7f678775e921 <gtk_widget_finalize>, dispatch_properties_changed = 0x7f678de80000, notify = 0x0, constructed = 0x7f6787751253 <gtk_widget_constructed>, flags = 1, n_construct_properties = 1, 
    pspecs = 0x0, n_pspecs = 0, pdummy = {0x0, 0x0, 0x0}}, show = 0x7f6787754e10 <gtk_widget_real_show>, hide = 0x7f6787755119 <gtk_widget_real_hide>, map = 0x7f678775eccd <gtk_widget_real_map>, 
  unmap = 0x7f678775edae <gtk_widget_real_unmap>, realize = 0x7f678775ee3d <gtk_widget_real_realize>, unrealize = 0x7f678775eee9 <gtk_widget_real_unrealize>, root = 0x7f6787751078 <gtk_widget_real_root>, 
  unroot = 0x7f6787751166 <gtk_widget_real_unroot>, size_allocate = 0x7f6787751399 <gtk_widget_real_size_allocate>, state_flags_changed = 0x7f678775130e <gtk_widget_real_state_flags_changed>, 
  direction_changed = 0x7f678775c4aa <gtk_widget_real_direction_changed>, get_request_mode = 0x7f67877512ff <gtk_widget_real_get_request_mode>, measure = 0x7f67877512ce <gtk_widget_real_measure>, 
  mnemonic_activate = 0x7f6787758d5d <gtk_widget_real_mnemonic_activate>, grab_focus = 0x7f6787759a7c <gtk_widget_grab_focus_self>, focus = 0x7f6787759dde <gtk_widget_real_focus>, 
  set_focus_child = 0x7f678776939a <gtk_widget_real_set_focus_child>, move_focus = 0x7f6787759f81 <gtk_widget_real_move_focus>, keynav_failed = 0x7f6787759fe1 <gtk_widget_real_keynav_failed>, 
  query_tooltip = 0x7f678775131c <gtk_widget_real_query_tooltip>, compute_expand = 0x0, css_changed = 0x7f6787759b7e <gtk_widget_real_css_changed>, 
  system_setting_changed = 0x7f6787759cd5 <gtk_widget_real_system_setting_changed>, snapshot = 0x7f67944012d0, contains = 0x7f6787750fef <gtk_widget_real_contains>, priv = 0x12f8f90, padding = {0x0, 0x0, 0x0, 
    0x0, 0x0, 0x0, 0x0, 0x0}}
(gdb) disassemble klass->snapshot,+64
Dump of assembler code from 0x7f67944012d0 to 0x7f6794401310:
   0x00007f67944012d0:	(bad)
   0x00007f67944012d1:	insl   (%dx),%es:(%rdi)
   0x00007f67944012d2:	sbb    (%rcx),%eax
   0x00007f67944012d4:	add    %al,(%rax)
   0x00007f67944012d6:	add    %al,(%rax)
   0x00007f67944012d8:	add    %al,(%rax)
   0x00007f67944012da:	add    %al,(%rax)
   0x00007f67944012dc:	add    %al,(%rax)
   0x00007f67944012de:	add    %al,(%rax)
   0x00007f67944012e0:	add    %al,(%rax)
   0x00007f67944012e2:	add    %al,(%rax)
   0x00007f67944012e4:	add    %al,(%rax)
   0x00007f67944012e6:	add    %al,(%rax)
   0x00007f67944012e8:	add    %al,(%rax)
   0x00007f67944012ea:	add    %al,(%rax)
   0x00007f67944012ec:	add    %al,(%rax)
   0x00007f67944012ee:	add    %al,(%rax)
   0x00007f67944012f0:	(bad)
   0x00007f67944012f1:	pop    %rsi
   0x00007f67944012f2:	data16 xchg %ah,0x7f(%rdi)
   0x00007f67944012f6:	add    %al,(%rax)
   0x00007f67944012f8:	loopne 0x7f6794401318
   0x00007f67944012fa:	movabs 0x4cd74000007f6793,%al
   0x00007f6794401303:	mov    %fs,0x7f(%rdi)
   0x00007f6794401306:	add    %al,(%rax)
   0x00007f6794401308:	rclb   (%rdx)
   0x00007f679440130a:	rex xchg %eax,%esp
   0x00007f679440130c:	addr32 jg 0x7f679440130f
   0x00007f679440130f:	add    %al,0x6793a01e(%rax)
End of assembler dump.
(gdb) frame 10
#10 0x00007f67879ad371 in _gdk_marshal_BOOLEAN__BOXEDv (closure=0x338ae70, return_value=0x7ffdd39838d0, instance=0x13c3e90, args=0x7ffdd3983a58, marshal_data=0x0, n_params=1, param_types=0x11e2dd0) at gdk/gdkmarshalers.c:130
warning: 130	gdk/gdkmarshalers.c: Datei oder Verzeichnis nicht gefunden [German for file or directory not found]
(gdb) print closure
$4 = (GClosure *) 0x338ae70
(gdb) print *closure
$5 = {ref_count = 2, meta_marshal_nouse = 0, n_guards = 0, n_fnotifiers = 0, n_inotifiers = 0, in_inotify = 0, floating = 0, derivative_flag = 0, in_marshal = 1, is_invalid = 0, marshal = 0x7f67879ad108 <_gdk_marshal_BOOLEAN__BOXED>, data = 0x13bb310, notifiers = 0x0}
(gdb) 

Regards,
Florian



^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-04 14:31                     ` pelzflorian (Florian Pelz)
  2024-05-04 18:08                       ` pelzflorian (Florian Pelz)
@ 2024-05-04 21:39                       ` David Pirotte
  2024-05-05  1:43                         ` pelzflorian (Florian Pelz)
  2024-05-06  9:53                         ` Basile Starynkevitch
  1 sibling, 2 replies; 30+ messages in thread
From: David Pirotte @ 2024-05-04 21:39 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: guile-user

[-- Attachment #1: Type: text/plain, Size: 2852 bytes --]

Hi Florian,

> Hi David, thank you for your continuing responses.

No problem. I am also interested in fixing this bug

> I will try to get a backtrace with GTK debug symbols by patching
> Guix to add a debug output to GTK, in the hope that I patch the right
> GTK.

It is definitely not a GLib/GObject nor a Gtk/Gdk/Gsk bug - i need the
full backtrace to look at the calls, from the one that segfault, a LIFO
backtrace of all calls, so i can try to see where it goes wrong ...

> However, my believe is that the error is in G-Golf

Yes, we are trying to find it, it's actually annoying that it works
fine in debian :), but we'll get there ...

> closures/callbacks/vfuncs (even though the hl-api tests do pass

there is no vfunc test in the test-suite - the tests are all those
examples that use them ... which is fine, but once i find the source of
this bug, i might add a more specific test to the test-suite.

> when run by Guix build or manually), specifically when I run valgrind
> on guile where I load and run drawing-widget.scm ...

I don't think it's a guile error either - definitely a g-golf error
that appears in guix and unfortunately not in debian ...

> it only shows errors from Boehm GC (at least mostly false-positive)

I'll double check that those snapshot vfunc (closure pointers) do not
become unreachable, i think i did check that but ... that would
definitely segfault the example if not ... it could be that i miss
checked how those are cached.

> I cannot tell you my host distro because there is none (there could
> be a foreign distro, but I have none).  It is Guix System, that is
> Guix all the way down.

Oh, ok -

> To build G-Golf manually, I can and had patched the its
> g-golf/init.scm to use /gnu/store/xxxxxxx/lib/libgirepository-1.0.so
> file names like the guile-g-golf package at
> <https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/guile-xyz.scm>
> does, but it will not be useful.

Imo, you should locally patch your guix image so it has one gdk-pixbuf
lib installed  keep the one that has the debug symbols - then comment
guile-g-golf in the guile-xyz module, create a g-golf module that you
can 'play with', and 'at will.constantly' make it point to the latest as
we a re working on tracking those bugs -

> Setting the GTK_A11Y env var does not make a difference (except the
> warning is gone) and on my x86_64 GNOME setup there never is a warning
> (although GTK_A11Y is unset, but d-bus is there).

I never thought in any moment that this warning was in any way 'linked'
to the problem, i did say and re-state here, that guix should be fixed
so it does not complain it can't find d-bus - terrible imo, it can lead
to other problems - till then, locally define the env var so we get
this annoying warning out of the way

David

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-04 18:08                       ` pelzflorian (Florian Pelz)
@ 2024-05-04 22:11                         ` David Pirotte
  2024-05-04 22:23                         ` David Pirotte
  1 sibling, 0 replies; 30+ messages in thread
From: David Pirotte @ 2024-05-04 22:11 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: guile-user

[-- Attachment #1: Type: text/plain, Size: 303 bytes --]

Hi Florian,

> > Hi David, thank you for your continuing responses.  I will try to
> > get a backtrace with GTK debug symbols  

> I now managed to build gtk with a debug output and meson configure
> flag "-Dc_args=-O0".

Perfect, thanks!
Let me look at it ... i'll get back asap ...

David

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-04 18:08                       ` pelzflorian (Florian Pelz)
  2024-05-04 22:11                         ` David Pirotte
@ 2024-05-04 22:23                         ` David Pirotte
  1 sibling, 0 replies; 30+ messages in thread
From: David Pirotte @ 2024-05-04 22:23 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: guile-user

[-- Attachment #1: Type: text/plain, Size: 480 bytes --]

Hi Florian,

> For drawing-widget.scm on x86_64, klass->snapshot looks high like a
> code segment address but has a bogus disassembly.  Was it clobbered?

can you try the following

	scheme@(guile-user)> ,use (g-golf)
	scheme@(guile-user)> (gc-disable)
	scheme@(guile-user)> (chdir "/your/path/to/examples/gtk-4") ;; <- FIX /your/path/to HERE ofc
	scheme@(guile-user)> (load "drawing-widget.scm")
	scheme@(guile-user)> (main '("-d"))

  and let me know ...

David

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-04 21:39                       ` David Pirotte
@ 2024-05-05  1:43                         ` pelzflorian (Florian Pelz)
  2024-05-05 21:30                           ` David Pirotte
  2024-05-06  9:53                         ` Basile Starynkevitch
  1 sibling, 1 reply; 30+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-05-05  1:43 UTC (permalink / raw)
  To: David Pirotte; +Cc: guile-user

Hi David.  (gc-disable) was a smart idea, sadly it does not help, but at
least we know now.  It makes Valgrind errors disappear after
(gc-disable) was called.

scheme@(guile-user)> ,use (g-golf)
scheme@(guile-user)> (gc-disable)
scheme@(guile-user)> (chdir "/home/florian/src/g-golf/examples/gtk-4")
scheme@(guile-user)> (load "drawing-widget.scm")
scheme@(guile-user)> (main '("-d"))
;; g-application-run 
;;          application: #<<gtk-application> 7ff0b42834e0> 
;;                 argc: 0 
;;                 argv: () 
;; gtk-window-set-child 
;;               window: #<<gtk-application-window> 7ff0b42a0eb0> 
;;                child: #<<drawing-widget> 7ff0b42a0bf0> 
;; gtk-window-present 
;;               window: #<<gtk-application-window> 7ff0b42a0eb0> 
Segmentation fault
florian@florianhp ~/src/tcgocr [env]$ valgrind 2>&1 guile | tee valout
==7880== Memcheck, a memory error detector
==7880== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
==7880== Using Valgrind-3.22.0 and LibVEX; rerun with -h for copyright info
==7880== Command: guile
==7880== 
==7880== Conditional jump or move depends on uninitialised value(s)
==7880==    at 0x49B5016: GC_push_all_eager (in /gnu/store/1w1r6r56z9lhg8ghcb7lxss6mkn7d5l1-libgc-8.2.2/lib/libgc.so.1.5.1)
==7880==    by 0x49AB38B: ??? (in /gnu/store/1w1r6r56z9lhg8ghcb7lxss6mkn7d5l1-libgc-8.2.2/lib/libgc.so.1.5.1)
[tons of GC errors…]
scheme@(guile-user)> (gc-disable)
[more GC errors…]
==7880==    by 0x48C9EDB: ??? (in /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1.6.0)
==7880==    by 0x492895E: ??? (in /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1.6.0)
==7880==    by 0x4933DB4: scm_call_n (in /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1.6.0)
==7880== 
scheme@(guile-user)> ,use (g-golf)
scheme@(guile-user)> (chdir "/home/florian/src/g-golf/examples/gtk-4")
scheme@(guile-user)> (load "drawing-widget.scm")
scheme@(guile-user)> (main '("-d"))
==7880== 
==7880== Process terminating with default action of signal 11 (SIGSEGV)
==7880==  Bad permissions for mapped region at address 0x94BC2D0
==7880==    at 0x94BC2D0: ???
==7880==    by 0xFEBB28A: ??? (in /gnu/store/qp9j03r0qszb61j6w786nvcqpd6f0rij-gtk-4.12.3/lib/libgtk-4.so.1.1200.3)
==7880==    by 0xFEBC189: gtk_widget_snapshot_child (in /gnu/store/qp9j03r0qszb61j6w786nvcqpd6f0rij-gtk-4.12.3/lib/libgtk-4.so.1.1200.3)
==7880==    by 0xFEA3FD3: ??? (in /gnu/store/qp9j03r0qszb61j6w786nvcqpd6f0rij-gtk-4.12.3/lib/libgtk-4.so.1.1200.3)
==7880==    by 0xFEBB0F7: ??? (in /gnu/store/qp9j03r0qszb61j6w786nvcqpd6f0rij-gtk-4.12.3/lib/libgtk-4.so.1.1200.3)
==7880==    by 0xFEBB28A: ??? (in /gnu/store/qp9j03r0qszb61j6w786nvcqpd6f0rij-gtk-4.12.3/lib/libgtk-4.so.1.1200.3)
==7880==    by 0xFEBB342: ??? (in /gnu/store/qp9j03r0qszb61j6w786nvcqpd6f0rij-gtk-4.12.3/lib/libgtk-4.so.1.1200.3)
==7880==    by 0xFEBB449: ??? (in /gnu/store/qp9j03r0qszb61j6w786nvcqpd6f0rij-gtk-4.12.3/lib/libgtk-4.so.1.1200.3)
==7880==    by 0xFECACA0: ??? (in /gnu/store/qp9j03r0qszb61j6w786nvcqpd6f0rij-gtk-4.12.3/lib/libgtk-4.so.1.1200.3)
==7880==    by 0x10100370: ??? (in /gnu/store/qp9j03r0qszb61j6w786nvcqpd6f0rij-gtk-4.12.3/lib/libgtk-4.so.1.1200.3)
==7880==    by 0xC0F05B8: ??? (in /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0.7800.0)
==7880==    by 0xC10352D: ??? (in /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0.7800.0)
==7880== 
==7880== HEAP SUMMARY:
==7880==     in use at exit: 36,575,081 bytes in 110,686 blocks
==7880==   total heap usage: 633,552 allocs, 522,866 frees, 87,881,755 bytes allocated
==7880== 
==7880== LEAK SUMMARY:
==7880==    definitely lost: 2,936 bytes in 15 blocks
==7880==    indirectly lost: 16,350 bytes in 682 blocks
==7880==      possibly lost: 19,128,578 bytes in 14,960 blocks
==7880==    still reachable: 17,316,057 bytes in 94,084 blocks
==7880==         suppressed: 0 bytes in 0 blocks
==7880== Rerun with --leak-check=full to see details of leaked memory
==7880== 
==7880== Use --track-origins=yes to see where uninitialised values come from
==7880== For lists of detected and suppressed errors, rerun with: -s
==7880== ERROR SUMMARY: 9656 errors from 72 contexts (suppressed: 0 from 0)
florian@florianhp ~/src/tcgocr [env]$ 



David Pirotte <david@altosw.be> writes:
> No problem. I am also interested in fixing this bug

:)

> Imo, you should locally patch your guix image so it has one gdk-pixbuf
> lib installed  keep the one that has the debug symbols

The one gdk-pixbuf problem is locally solved (I think, the error message
is gone and hello-world.scm works) by using --no-grafts in every Guix
invocation.  What I could/will still do is collect gdk-pixbuf debug info
in the same directory as locally patched gtk debug info.

>> Setting the GTK_A11Y env var does not make a difference (except the
>> warning is gone) and on my x86_64 GNOME setup there never is a warning
>> (although GTK_A11Y is unset, but d-bus is there).
>
> I never thought in any moment that this warning was in any way 'linked'
> to the problem, i did say and re-state here, that guix should be fixed
> so it does not complain it can't find d-bus - terrible imo, it can lead
> to other problems - till then, locally define the env var so we get
> this annoying warning out of the way

Well the d-bus service cannot be a requirement of a Guix package.  It
could be a requirement of a Guix service, but g-golf is not a service
but just a package.

Regards,
Florian



^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-05  1:43                         ` pelzflorian (Florian Pelz)
@ 2024-05-05 21:30                           ` David Pirotte
  2024-05-06  9:45                             ` pelzflorian (Florian Pelz)
  0 siblings, 1 reply; 30+ messages in thread
From: David Pirotte @ 2024-05-05 21:30 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: guile-user

[-- Attachment #1: Type: text/plain, Size: 1367 bytes --]

Hi Florian,

> (gc-disable) was a smart idea, sadly it does not help, but at least
> we know now. ...

I am not entirely convinced yet - in one way or another, somewhere,,
somehow, the klass->snapshot is 'corrupted', either the pointer, or the
mem it points to ... why, when, where ... ?

> scheme@(guile-user)> ,use (g-golf)
> scheme@(guile-user)> (gc-disable)
> scheme@(guile-user)> (chdir "/home/florian/src/g-golf/examples/gtk-4")
> scheme@(guile-user)> (load "drawing-widget.scm")
> scheme@(guile-user)> (main '("-d"))
> ...

Thanks for the valgrind session info, but could you kindely 'reproduce'
the gdb full backtrace and run the few gdb command as in the previous
email, so i can compare ...

Thanks,
David

> > Imo, you should locally patch your guix image so it has one
> > gdk-pixbuf lib installed  keep the one that has the debug symbols  
> 
> The one gdk-pixbuf problem is locally solved.

And yet, i would like you to locally fix this 'proper', is this
possible? If so, could you do that, thanks.

> Well the d-bus service cannot be a requirement of a Guix package.  It
> could be a requirement of a Guix service, but g-golf is not a service
> but just a package.

	I never said nor asked you to fix this problem 'in g-golf' :) - 

But could you manually start the service, and re-run the above,
thanks

David

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-05 21:30                           ` David Pirotte
@ 2024-05-06  9:45                             ` pelzflorian (Florian Pelz)
  0 siblings, 0 replies; 30+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-05-06  9:45 UTC (permalink / raw)
  To: David Pirotte; +Cc: guile-user

David Pirotte <david@altosw.be> writes:
>> (gc-disable) was a smart idea, sadly it does not help, but at least
>> we know now. ...
>
> I am not entirely convinced yet - in one way or another, somewhere,,
> somehow, the klass->snapshot is 'corrupted', either the pointer, or the
> mem it points to ... why, when, where ... ?

Yes, I would like to try checking with GDB watchpoints, but I do not
know in advance what to watch, i.e. what will become klass->snapshot.


>> scheme@(guile-user)> ,use (g-golf)
>> scheme@(guile-user)> (gc-disable)
>> scheme@(guile-user)> (chdir "/home/florian/src/g-golf/examples/gtk-4")
>> scheme@(guile-user)> (load "drawing-widget.scm")
>> scheme@(guile-user)> (main '("-d"))
>> ...
>
> Thanks for the valgrind session info, but could you kindely 'reproduce'
> the gdb full backtrace and run the few gdb command as in the previous
> email, so i can compare ...

With these commands, i.e. with (gc-disable), gdb says basically the
same, except the disassembly is always different.  (I’ve since switched
back to the master branch, so -d is useless, but I guess this does not
matter.)  First run:

(gdb) bt
#0  0x00007fc50b0822d0 in ?? ()
#1  0x00007fc50056812a in gtk_widget_create_render_node (widget=0xca3910, snapshot=0x2cbca40) at ../gtk-4.12.3/gtk/gtkwidget.c:11862
#2  0x00007fc50056828b in gtk_widget_do_snapshot (widget=0xca3910, snapshot=0x2cbca40) at ../gtk-4.12.3/gtk/gtkwidget.c:11897
#3  0x00007fc50056918a in gtk_widget_snapshot_child (widget=0xcb1160, child=0xca3910, snapshot=0x2cbca40) at ../gtk-4.12.3/gtk/gtkwidget.c:12318
#4  0x00007fc500550fd4 in gtk_widget_real_snapshot (widget=0xcb1160, snapshot=0x2cbca40) at ../gtk-4.12.3/gtk/gtkwidget.c:756
#5  0x00007fc5005680f8 in gtk_widget_create_render_node (widget=0xcb1160, snapshot=0x2cbca40) at ../gtk-4.12.3/gtk/gtkwidget.c:11857
#6  0x00007fc50056828b in gtk_widget_do_snapshot (widget=0xcb1160, snapshot=0x2cbca40) at ../gtk-4.12.3/gtk/gtkwidget.c:11897
#7  0x00007fc500568343 in gtk_widget_snapshot (widget=0xcb1160, snapshot=0x2cbca40) at ../gtk-4.12.3/gtk/gtkwidget.c:11919
#8  0x00007fc50056844a in gtk_widget_render (widget=0xcb1160, surface=0xca6830, region=0x2c818c0) at ../gtk-4.12.3/gtk/gtkwidget.c:11951
#9  0x00007fc500577ca1 in surface_render (surface=0xca6830, region=0x2c818c0, widget=0xcb1160) at ../gtk-4.12.3/gtk/gtkwindow.c:4813
#10 0x00007fc5007ad371 in _gdk_marshal_BOOLEAN__BOXEDv (closure=0x2c7e2d0, return_value=0x7ffdecd6cdb0, instance=0xca6830, args=0x7ffdecd6cf38, marshal_data=0x0, n_params=1, param_types=0xb1bfb0) at gdk/gdkmarshalers.c:130
#11 0x00007fc5059b65b9 in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#12 0x00007fc5059c952e in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#13 0x00007fc5059cf3c5 in g_signal_emit_valist () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#14 0x00007fc5059cf472 in g_signal_emit () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#15 0x00007fc50086a31c in gdk_surface_paint_on_clock (clock=0xb1aca0, data=0xca6830) at ../gtk-4.12.3/gdk/gdksurface.c:1377
#16 0x00007fc5059b65b9 in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#17 0x00007fc5059ca17b in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#18 0x00007fc5059cf3c5 in g_signal_emit_valist () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#19 0x00007fc5059cf472 in g_signal_emit () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#20 0x00007fc50084cd15 in _gdk_frame_clock_emit_paint (frame_clock=0xb1aca0) at ../gtk-4.12.3/gdk/gdkframeclock.c:708
#21 0x00007fc50084ddf9 in gdk_frame_clock_paint_idle (data=0xb1aca0) at ../gtk-4.12.3/gdk/gdkframeclockidle.c:632
#22 0x00007fc5062b88eb in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libglib-2.0.so.0
#23 0x00007fc5062b4cf3 in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libglib-2.0.so.0
#24 0x00007fc5062b7c17 in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libglib-2.0.so.0
#25 0x00007fc5062b81ff in g_main_context_iteration () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libglib-2.0.so.0
#26 0x00007fc504ef964d in g_application_run () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgio-2.0.so.0
#27 0x00007fc50b698052 in ?? () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#28 0x00007fc50b696c85 in ?? () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#29 0x00007fc50b69768e in ffi_call () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#30 0x00007fc5063ae9c7 in g_callable_info_invoke () from /gnu/store/vycyjb00dcqwjpn45as8jhrw4apv4r5n-gobject-introspection-1.73.1/lib/libgirepository-1.0.so
#31 0x00007fc5063aff62 in g_function_info_invoke () from /gnu/store/vycyjb00dcqwjpn45as8jhrw4apv4r5n-gobject-introspection-1.73.1/lib/libgirepository-1.0.so
#32 0x00007fc50b698052 in ?? () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#33 0x00007fc50b696c85 in ?? () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#34 0x00007fc50b69768e in ffi_call () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#35 0x00007fc50b7f4d37 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#36 0x00007fc50b7e4f55 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#37 0x00007fc50b7d9b9d in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#38 0x00007fc50b7e4db5 in scm_call_n () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#39 0x00007fc50b74f977 in scm_primitive_eval () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#40 0x00007fc50b755846 in scm_eval () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#41 0x00007fc50b7b43e6 in scm_shell () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#42 0x00007fc50b7668cc in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#43 0x00007fc50b74de1a in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#44 0x00007fc50b7d7390 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#45 0x00007fc50b7e4db5 in scm_call_n () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#46 0x00007fc50b74f5ca in scm_call_2 () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#47 0x00007fc50b7f6092 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#48 0x00007fc50b7d1e1f in scm_c_catch () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#49 0x00007fc50b750396 in scm_c_with_continuation_barrier () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#50 0x00007fc50b7d1049 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#51 0x00007fc50b6b47fa in GC_call_with_stack_base () from /gnu/store/1w1r6r56z9lhg8ghcb7lxss6mkn7d5l1-libgc-8.2.2/lib/libgc.so.1
#52 0x00007fc50b7cb3f8 in scm_with_guile () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#53 0x00007fc50b76f8e5 in scm_boot_guile () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#54 0x00000000004010f7 in ?? ()
#55 0x00007fc50b1dc1f7 in __libc_start_call_main () from /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/libc.so.6
#56 0x00007fc50b1dc2ac in __libc_start_main_impl () from /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/libc.so.6
#57 0x0000000000401171 in ?? ()
(gdb) frame 1
#1  0x00007fc50056812a in gtk_widget_create_render_node (widget=0xca3910, snapshot=0x2cbca40) at ../gtk-4.12.3/gtk/gtkwidget.c:11862
11862	      klass->snapshot (widget, snapshot);
(gdb) list
11857	      klass->snapshot (widget, snapshot);
11858	      gtk_snapshot_pop (snapshot);
11859	    }
11860	  else
11861	    {
11862	      klass->snapshot (widget, snapshot);
11863	    }
11864	
11865	  gtk_css_style_snapshot_outline (&boxes, snapshot);
11866	
(gdb) print klass->snapshot
$1 = (void (*)(GtkWidget *, GtkSnapshot *)) 0x7fc50b0822d0
(gdb) disassemble klass->snapshot,+64
Dump of assembler code from 0x7fc50b0822d0 to 0x7fc50b082310:
   0x00007fc50b0822d0:	rolb   $0x0,0x0(%rsi,%riz,4)
   0x00007fc50b0822d8:	add    %al,(%rax)
   0x00007fc50b0822da:	add    %al,(%rax)
   0x00007fc50b0822dc:	add    %al,(%rax)
   0x00007fc50b0822de:	add    %al,(%rax)
   0x00007fc50b0822e0:	add    %al,(%rax)
   0x00007fc50b0822e2:	add    %al,(%rax)
   0x00007fc50b0822e4:	add    %al,(%rax)
   0x00007fc50b0822e6:	add    %al,(%rax)
   0x00007fc50b0822e8:	add    %al,(%rax)
   0x00007fc50b0822ea:	add    %al,(%rax)
   0x00007fc50b0822ec:	add    %al,(%rax)
   0x00007fc50b0822ee:	add    %al,(%rax)
   0x00007fc50b0822f0:	and    %bl,0x7fc4f9cd(%rsi)
   0x00007fc50b0822f6:	add    %al,(%rax)
   0x00007fc50b0822f8:	loopne 0x7fc50b0822b8
   0x00007fc50b0822fa:	rex or %eax,%ebp
   0x00007fc50b0822fd:	jg     0x7fc50b0822ff
   0x00007fc50b0822ff:	add    %ah,%al
   0x00007fc50b082301:	mov    %edi,%cs
   0x00007fc50b082303:	stc
   0x00007fc50b082304:	(bad)
   0x00007fc50b082305:	jg     0x7fc50b082307
   0x00007fc50b082307:	add    %dl,%al
   0x00007fc50b082309:	and    (%rax),%cl
   0x00007fc50b08230b:	or     %ebp,%eax
   0x00007fc50b08230d:	jg     0x7fc50b08230f
   0x00007fc50b08230f:	add    %al,-0x3af6bf42(%rax)
End of assembler dump.
(gdb) quit

Second run:

Thread 1 "guile" received signal SIGSEGV, Segmentation fault.
0x00007f2ce98812d0 in ?? ()
(gdb) bt
#0  0x00007f2ce98812d0 in ?? ()
#1  0x00007f2cded6812a in gtk_widget_create_render_node (widget=0x1ff7020, snapshot=0x4038620) at ../gtk-4.12.3/gtk/gtkwidget.c:11862
#2  0x00007f2cded6828b in gtk_widget_do_snapshot (widget=0x1ff7020, snapshot=0x4038620) at ../gtk-4.12.3/gtk/gtkwidget.c:11897
#3  0x00007f2cded6918a in gtk_widget_snapshot_child (widget=0x2004490, child=0x1ff7020, snapshot=0x4038620) at ../gtk-4.12.3/gtk/gtkwidget.c:12318
#4  0x00007f2cded50fd4 in gtk_widget_real_snapshot (widget=0x2004490, snapshot=0x4038620) at ../gtk-4.12.3/gtk/gtkwidget.c:756
#5  0x00007f2cded680f8 in gtk_widget_create_render_node (widget=0x2004490, snapshot=0x4038620) at ../gtk-4.12.3/gtk/gtkwidget.c:11857
#6  0x00007f2cded6828b in gtk_widget_do_snapshot (widget=0x2004490, snapshot=0x4038620) at ../gtk-4.12.3/gtk/gtkwidget.c:11897
#7  0x00007f2cded68343 in gtk_widget_snapshot (widget=0x2004490, snapshot=0x4038620) at ../gtk-4.12.3/gtk/gtkwidget.c:11919
#8  0x00007f2cded6844a in gtk_widget_render (widget=0x2004490, surface=0x1fe7be0, region=0x3ffd690) at ../gtk-4.12.3/gtk/gtkwidget.c:11951
#9  0x00007f2cded77ca1 in surface_render (surface=0x1fe7be0, region=0x3ffd690, widget=0x2004490) at ../gtk-4.12.3/gtk/gtkwindow.c:4813
#10 0x00007f2cdefad371 in _gdk_marshal_BOOLEAN__BOXEDv (closure=0x3ffa100, return_value=0x7ffde5afd4f0, instance=0x1fe7be0, args=0x7ffde5afd678, marshal_data=0x0, n_params=1, param_types=0x1e71f60) at gdk/gdkmarshalers.c:130
#11 0x00007f2ce2b8d5b9 in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#12 0x00007f2ce2ba052e in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#13 0x00007f2ce2ba63c5 in g_signal_emit_valist () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#14 0x00007f2ce2ba6472 in g_signal_emit () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#15 0x00007f2cdf06a31c in gdk_surface_paint_on_clock (clock=0x200dd90, data=0x1fe7be0) at ../gtk-4.12.3/gdk/gdksurface.c:1377
#16 0x00007f2ce2b8d5b9 in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#17 0x00007f2ce2ba117b in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#18 0x00007f2ce2ba63c5 in g_signal_emit_valist () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#19 0x00007f2ce2ba6472 in g_signal_emit () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgobject-2.0.so.0
#20 0x00007f2cdf04cd15 in _gdk_frame_clock_emit_paint (frame_clock=0x200dd90) at ../gtk-4.12.3/gdk/gdkframeclock.c:708
#21 0x00007f2cdf04ddf9 in gdk_frame_clock_paint_idle (data=0x200dd90) at ../gtk-4.12.3/gdk/gdkframeclockidle.c:632
#22 0x00007f2ce2c348eb in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libglib-2.0.so.0
#23 0x00007f2ce2c30cf3 in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libglib-2.0.so.0
#24 0x00007f2ce2c33c17 in ?? () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libglib-2.0.so.0
#25 0x00007f2ce2c341ff in g_main_context_iteration () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libglib-2.0.so.0
#26 0x00007f2ce2a6f64d in g_application_run () from /gnu/store/kjdjarbkknf8vv9rc8vkkh1k1vrc57r0-glib-2.78.0/lib/libgio-2.0.so.0
#27 0x00007f2ce9f03052 in ?? () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#28 0x00007f2ce9f01c85 in ?? () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#29 0x00007f2ce9f0268e in ffi_call () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#30 0x00007f2ce2d2a9c7 in g_callable_info_invoke () from /gnu/store/vycyjb00dcqwjpn45as8jhrw4apv4r5n-gobject-introspection-1.73.1/lib/libgirepository-1.0.so
#31 0x00007f2ce2d2bf62 in g_function_info_invoke () from /gnu/store/vycyjb00dcqwjpn45as8jhrw4apv4r5n-gobject-introspection-1.73.1/lib/libgirepository-1.0.so
#32 0x00007f2ce9f03052 in ?? () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#33 0x00007f2ce9f01c85 in ?? () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#34 0x00007f2ce9f0268e in ffi_call () from /gnu/store/w8b0l8hk6g0fahj4fvmc4qqm3cvaxnmv-libffi-3.4.4/lib/libffi.so.8
#35 0x00007f2cea05fd37 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#36 0x00007f2cea04ff55 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#37 0x00007f2cea044b9d in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#38 0x00007f2cea04fdb5 in scm_call_n () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#39 0x00007f2ce9fba977 in scm_primitive_eval () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#40 0x00007f2ce9fc0846 in scm_eval () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#41 0x00007f2cea01f3e6 in scm_shell () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#42 0x00007f2ce9fd18cc in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#43 0x00007f2ce9fb8e1a in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#44 0x00007f2cea042390 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#45 0x00007f2cea04fdb5 in scm_call_n () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#46 0x00007f2ce9fba5ca in scm_call_2 () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#47 0x00007f2cea061092 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#48 0x00007f2cea03ce1f in scm_c_catch () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#49 0x00007f2ce9fbb396 in scm_c_with_continuation_barrier () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#50 0x00007f2cea03c049 in ?? () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#51 0x00007f2ce9f1f7fa in GC_call_with_stack_base () from /gnu/store/1w1r6r56z9lhg8ghcb7lxss6mkn7d5l1-libgc-8.2.2/lib/libgc.so.1
#52 0x00007f2cea0363f8 in scm_with_guile () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#53 0x00007f2ce9fda8e5 in scm_boot_guile () from /gnu/store/4gvgcfdiz67wv04ihqfa8pqwzsb0qpv5-guile-3.0.9/lib/libguile-3.0.so.1
#54 0x00000000004010f7 in ?? ()
#55 0x00007f2ce9a471f7 in __libc_start_call_main () from /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/libc.so.6
#56 0x00007f2ce9a472ac in __libc_start_main_impl () from /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/libc.so.6
#57 0x0000000000401171 in ?? ()
(gdb) frame 1
#1  0x00007f2cded6812a in gtk_widget_create_render_node (widget=0x1ff7020, snapshot=0x4038620) at ../gtk-4.12.3/gtk/gtkwidget.c:11862
11862	      klass->snapshot (widget, snapshot);
(gdb) disassemble klass->snapshot,+64
Dump of assembler code from 0x7f2ce98812d0 to 0x7f2ce9881310:
   0x00007f2ce98812d0:	loopne 0x7f2ce98812eb
   0x00007f2ce98812d2:	faddl  (%rcx)
   0x00007f2ce98812d4:	add    %al,(%rax)
   0x00007f2ce98812d6:	add    %al,(%rax)
   0x00007f2ce98812d8:	add    %al,(%rax)
   0x00007f2ce98812da:	add    %al,(%rax)
   0x00007f2ce98812dc:	add    %al,(%rax)
   0x00007f2ce98812de:	add    %al,(%rax)
   0x00007f2ce98812e0:	add    %al,(%rax)
   0x00007f2ce98812e2:	add    %al,(%rax)
   0x00007f2ce98812e4:	add    %al,(%rax)
   0x00007f2ce98812e6:	add    %al,(%rax)
   0x00007f2ce98812e8:	add    %al,(%rax)
   0x00007f2ce98812ea:	add    %al,(%rax)
   0x00007f2ce98812ec:	add    %al,(%rax)
   0x00007f2ce98812ee:	add    %al,(%rax)
   0x00007f2ce98812f0:	movabs 0xe000007f2cdc47cb,%al
   0x00007f2ce98812f9:	mov    $0x7f2ce987,%esi
   0x00007f2ce98812fe:	add    %al,(%rax)
   0x00007f2ce9881300:	add    %bh,0x4a(%rdx)
   0x00007f2ce9881303:	fsubrl (%rdi,%rdi,2)
   0x00007f2ce9881306:	add    %al,(%rax)
   0x00007f2ce9881308:	rclb   (%rdx)
   0x00007f2ce988130a:	mov    %ch,%cl
   0x00007f2ce988130c:	sub    $0x7f,%al
   0x00007f2ce988130e:	add    %al,(%rax)
End of assembler dump.
(gdb) 



>> > Imo, you should locally patch your guix image so it has one
>> > gdk-pixbuf lib installed  keep the one that has the debug symbols  
>> 
>> The one gdk-pixbuf problem is locally solved.
>
> And yet, i would like you to locally fix this 'proper', is this
> possible? If so, could you do that, thanks.

With and only with “--no-grafts” given to each used guix command, it is
worked around proper; I have checked and compared that there now is the
same ungrafted gdk-pixbuf used by gtk and used elsewhere.



>
>> Well the d-bus service cannot be a requirement of a Guix package.  It
>> could be a requirement of a Guix service, but g-golf is not a service
>> but just a package.
>
> 	I never said nor asked you to fix this problem 'in g-golf' :) - 
>
> But could you manually start the service, and re-run the above,
> thanks

When I use GNOME desktop environment, all d-bus services are running and
no warning for d-bus nor a11y is displayed.

Regards,
Florian



^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-04 21:39                       ` David Pirotte
  2024-05-05  1:43                         ` pelzflorian (Florian Pelz)
@ 2024-05-06  9:53                         ` Basile Starynkevitch
  2024-05-06 13:08                           ` pelzflorian (Florian Pelz)
  1 sibling, 1 reply; 30+ messages in thread
From: Basile Starynkevitch @ 2024-05-06  9:53 UTC (permalink / raw)
  To: David Pirotte, pelzflorian (Florian Pelz); +Cc: guile-user


On 5/4/24 11:39 PM, David Pirotte wrote:
> Hi Florian,
>
>> Hi David, thank you for your continuing responses.
> No problem. I am also interested in fixing this bug
>
>> I will try to get a backtrace with GTK debug symbols by patching
>> Guix to add a debug output to GTK, in the hope that I patch the right
>> GTK.
>

A possibility to get a backtrace (assuming you compile on Linux with '-O 
-g') is to use the libbacktrace library from I.L.Taylor on 
https://github.com/ianlancetaylor/libbacktrace

and the RefPerSys open source inference engine project (see 
http://refpersys.org/ ...) is using it.

Regards from near Paris in France.

-- 
Basile Starynkevitch             <basile@starynkevitch.net>
(only mine opinions / les opinions sont miennes uniquement)
8 rue de la Faïencerie, 92340 Bourg-la-Reine, France
web page: starynkevitch.net/Basile/
See/voir:   https://github.com/RefPerSys/RefPerSys




^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-06  9:53                         ` Basile Starynkevitch
@ 2024-05-06 13:08                           ` pelzflorian (Florian Pelz)
  0 siblings, 0 replies; 30+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-05-06 13:08 UTC (permalink / raw)
  To: Basile Starynkevitch; +Cc: David Pirotte, guile-user

Hello Basile, thank you for the tips, but I have since managed to get a
good backtrace.  -O is what I used by compiling GTK with configure flag
-Dc_args=-O0.  -g did not work with g-golf (this is Guix’
with-debug-info transformation), but stripped binaries with debug info
in a separate output and setting GDB_DEBUG_FILE_DIRECTORY as documented
in the Guix manual did work.  For this I had to patch Guix and change
its gtk package to list "debug" in its outputs field.

RefPerSys’ approach to use AGI seems like overkill to me here and its
memory and disk space requirements are prohibitively enormous, but as I
understand it, it was not your suggestion to use it but just and
example.

Regards,
Florian



^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-01  8:17             ` pelzflorian (Florian Pelz)
@ 2024-05-07  1:39               ` David Pirotte
  2024-05-07  9:36                 ` pelzflorian (Florian Pelz)
  0 siblings, 1 reply; 30+ messages in thread
From: David Pirotte @ 2024-05-07  1:39 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: guile-user


[-- Attachment #1.1: Type: text/plain, Size: 453 bytes --]

Hi Florian,

> ...
> pygobject GTK3 examples are working.  I will experiment and try to
> write Vala/C code that breaks now.

I thought they had Gtk-4 examples as well. But anyway, I cooked a
pygobject version of this drawing-widget example, attached.

Could you:

	install pygobject
	[ run its test-suite ?		- it used to fail, in Guix

Drop this example somewhere:

	chmod a+x drawing-widget.py
	./drawing-widget.py

Thanks,
David

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: drawing-widget.py --]
[-- Type: text/x-python, Size: 1711 bytes --]

#!/usr/bin/env python3
# -*- mode: python; coding: utf-8 -*-
 
import gi
gi.require_version("Gtk", "4.0")
 
from gi.repository import Gtk, Gdk, Graphene
 
class DrawingWidget(Gtk.Widget):
    def do_snapshot(self, snapshot):
        width = self.get_width() / 2
        height = self.get_height() / 2
        color = Gdk.RGBA()
        
        color.parse("rgba(237, 20, 20, 1.0)")
        snapshot.append_color(
          color,
          # Gdk.RGBA(red=0.18, green=0.8, blue=0.44, alpha=1.0),
          Graphene.Rect.alloc().init(0, 0, width, height)
        )
        
        color.parse("rgba(46, 204, 112, 1.0)")
        snapshot.append_color(
          color,
          # Gdk.RGBA(red=0.18, green=0.8, blue=0.44, alpha=1.0),
          Graphene.Rect.alloc().init(width, 0, width, height)
        )
        
        color.parse("rgba(252, 189, 74, 1.0)")
        snapshot.append_color(
          color,
          # Gdk.RGBA(red=0.18, green=0.8, blue=0.44, alpha=1.0),
          Graphene.Rect.alloc().init(0, height, width, height)
        )
        
        color.parse("rgba(41, 127, 186, 1.0)")
        snapshot.append_color(
          color,
          # Gdk.RGBA(red=0.18, green=0.8, blue=0.44, alpha=1.0),
          Graphene.Rect.alloc().init(width, height, width, height)
        )

def on_activate(app):
    window = Gtk.ApplicationWindow(
        title="Drawing Widget",
        default_width=320,
        default_height=320,
        application=app,
        child=DrawingWidget(hexpand=True, vexpand=True)
    )
    window.present()
 
app = Gtk.Application(application_id='com.example.App')
app.connect('activate', on_activate)
app.run(None)

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-07  1:39               ` David Pirotte
@ 2024-05-07  9:36                 ` pelzflorian (Florian Pelz)
  2024-05-07 23:53                   ` David Pirotte
  0 siblings, 1 reply; 30+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-05-07  9:36 UTC (permalink / raw)
  To: David Pirotte; +Cc: guile-user

Thank you for the python code.  This works unlike g-golf in Guix.

guix shell python python-pygobject gtk --no-grafts -- python3 /tmp/drawing-widget.py

and

guix shell python python-pygobject gtk -- python3 /tmp/drawing-widget.py

both show a window divided in four nicely-colored rectangles.

I am puzzled by g-golf’s random code clobbering in Guix; gdb watch in
reverse debugging did not work when the scope of klass->snapshot was
left.

Since I do not speak nor like mutation-heavy python but hope to use
g-golf, I will set up a Debian VM for now and look at each g-golf file
slowly step by step.


Before, I have tried to verify the signature, but it fails

florian@florianhp /tmp$ mv pgp0oQiDuzpTz.pgp drawing-widget.pgp
florian@florianhp /tmp$ gpg --verify drawing-widget.sig drawing-widget.py 
gpg: Signature made Tue 07 May 2024 03:39:03 AM CEST
gpg:                using RSA key 842265459B413377EEAC91DEF374FD93A3057AD7
gpg: BAD signature from "David Pirotte <david@altosw.be>" [unknown]

and I also cannot compare with signatures in the g-golf repo, because
the commits in the g-golf repo are not gpg-signed.  It would be better
to sign commits, I guess.

Regards,
Florian



^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-07  9:36                 ` pelzflorian (Florian Pelz)
@ 2024-05-07 23:53                   ` David Pirotte
  2024-05-08 10:49                     ` pelzflorian (Florian Pelz)
  0 siblings, 1 reply; 30+ messages in thread
From: David Pirotte @ 2024-05-07 23:53 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: guile-user

[-- Attachment #1: Type: text/plain, Size: 1535 bytes --]

Hi Florian,

> Thank you for the python code.  This works unlike g-golf in Guix.
> ...

Ok, expected, but I wanted to double check - Not an excuse ofc,
but pygobjec is mostly written in C, including their callback and
gclosure marshal(ers), so when they need to either replace or access
such VFunc pointer (or place a call upon them), they can (re)use quite
a lot of the upstream code.

G-Golf is 100% guile scheme code (nearly, a few C function exceptions,
but unrelated to this part of what we are dealing with), including both
the Callback and GClosure marshal(ers) - quite a diff context ... but i
wanted to make sure ...

> I am puzzled by g-golf’s random code clobbering in Guix; gdb watch in
> reverse debugging did not work when the scope of klass->snapshot was
> left.

Very annoying indeed - eventually we'll track and fix this ...

> Since I do not speak nor like mutation-heavy python but hope to use
> g-golf, I will set up a Debian VM for now and look at each g-golf
> file slowly step by step.

Ok - But as time allows, we should still try to (fix this bug and) run
all other examples in guix, except the peg-solitaire, and the
animation based examples, they should all run  - i am especially
interested to see if the adw1-demo works fine ...

> Before, I have tried to verify the signature, but it fails

I didn't sign the attachment -

> and I also cannot compare with signatures in the g-golf repo, because
> ...

Right, I sign the tags, and the tarballs - 

Cheers,
David

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-07 23:53                   ` David Pirotte
@ 2024-05-08 10:49                     ` pelzflorian (Florian Pelz)
  2024-05-08 21:51                       ` David Pirotte
  0 siblings, 1 reply; 30+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-05-08 10:49 UTC (permalink / raw)
  To: David Pirotte; +Cc: guile-user

[-- Attachment #1: Type: text/plain, Size: 2870 bytes --]

Hi David.  It is interesting that pygobject has more C.

I tried adw1-demo.scm with the attached patch to replace
(current-filename), which would return #f so (dirname) throws.

It fails because it cannot find namespaces.  Guix uses libadwaita 1.4.0.
Is it too old?

florian@florianhp ~/src/g-golf/examples/adw-1 [env]$ ./adw1-demo.scm 
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;;       or pass the --no-auto-compile argument to disable.
;;; compiling /home/florian/src/g-golf/examples/adw-1/./adw1-demo.scm
;;; compiling /home/florian/src/g-golf/examples/adw-1/adw1-demo/window.scm
;;; compiling /home/florian/src/g-golf/examples/adw-1/adw1-demo/navigation-view.scm
;;; compiling /home/florian/src/g-golf/examples/adw-1/adw1-demo/navigation-view-demo-dialog.scm
;;; WARNING: compilation of /home/florian/src/g-golf/examples/adw-1/adw1-demo/navigation-view-demo-dialog.scm failed:
;;; No such namespace name:  "Adw" "Dialog"
;;; WARNING: compilation of /home/florian/src/g-golf/examples/adw-1/adw1-demo/navigation-view.scm failed:
;;; No such namespace name:  "Adw" "Dialog"
;;; WARNING: compilation of /home/florian/src/g-golf/examples/adw-1/adw1-demo/window.scm failed:
;;; No such namespace name:  "Adw" "Dialog"
;;; compiling /home/florian/src/g-golf/examples/adw-1/adw1-demo/style-classes.scm
;;; compiling /home/florian/src/g-golf/examples/adw-1/adw1-demo/style-classes-demo-dialog.scm
;;; WARNING: compilation of /home/florian/src/g-golf/examples/adw-1/adw1-demo/style-classes-demo-dialog.scm failed:
;;; No such namespace name:  "Adw" "Dialog"
;;; WARNING: compilation of /home/florian/src/g-golf/examples/adw-1/adw1-demo/style-classes.scm failed:
;;; No such namespace name:  "Adw" "Dialog"
;;; compiling /home/florian/src/g-golf/examples/adw-1/adw1-demo/dialogs.scm
;;; WARNING: compilation of /home/florian/src/g-golf/examples/adw-1/adw1-demo/dialogs.scm failed:
;;; No such namespace name:  "Adw" "AlertDialog"
;;; WARNING: compilation of /home/florian/src/g-golf/examples/adw-1/./adw1-demo.scm failed:
;;; No such namespace name:  "Adw" "AlertDialog"
Backtrace:
In ice-9/boot-9.scm:
  1752:10  7 (with-exception-handler _ _ #:unwind? _ # _)
In unknown file:
           6 (apply-smob/0 #<thunk 7f7028915300>)
In ice-9/boot-9.scm:
    724:2  5 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
In ice-9/eval.scm:
    619:8  4 (_ #(#(#<directory (guile-user) 7f7028918c80>)))
    619:8  3 (_ #(#(#(#<directory (guile-user) 7f7028918c80>)) #<<…>))
    163:9  2 (_ #(#(#(#<directory (guile-user) 7f7028918c80>)) #<<…>))
   223:20  1 (proc #(#(#(#<directory (guile-user) 7f7028918c80>)) #))
In unknown file:
           0 (%resolve-variable (7 . show-window) #<directory (guile…>)

ERROR: In procedure %resolve-variable:
Unbound variable: show-window

Regards,
Florian


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Change-current-filename.patch --]
[-- Type: text/x-patch, Size: 7001 bytes --]

From 9498143bf954971fe98873188169b1580209491d Mon Sep 17 00:00:00 2001
From: Florian Pelz <pelzflorian@pelzflorian.de>
Date: Wed, 8 May 2024 12:11:44 +0200
Subject: [PATCH] Change current-filename.

---
 examples/adw-1/adw1-demo.scm                             | 2 +-
 examples/adw-1/adw1-demo/animations.scm                  | 2 +-
 examples/adw-1/adw1-demo/dialogs.scm                     | 2 +-
 examples/adw-1/adw1-demo/navigation-view-demo-dialog.scm | 2 +-
 examples/adw-1/adw1-demo/navigation-view.scm             | 2 +-
 examples/adw-1/adw1-demo/preferences.scm                 | 2 +-
 examples/adw-1/adw1-demo/style-classes-demo-dialog.scm   | 2 +-
 examples/adw-1/adw1-demo/style-classes.scm               | 2 +-
 examples/adw-1/adw1-demo/welcome.scm                     | 2 +-
 examples/adw-1/adw1-demo/window.scm                      | 2 +-
 10 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/examples/adw-1/adw1-demo.scm b/examples/adw-1/adw1-demo.scm
index 485c49b..d07e6fd 100755
--- a/examples/adw-1/adw1-demo.scm
+++ b/examples/adw-1/adw1-demo.scm
@@ -45,7 +45,7 @@ exec guile -e main -s "$0" "$@"
 
 
 (add-to-load-path
- (dirname (current-filename)))
+ (dirname "/home/florian/src/g-golf/examples/adw-1/adw1-demo.scm"))
 
 (use-modules (adw1-demo window))
 
diff --git a/examples/adw-1/adw1-demo/animations.scm b/examples/adw-1/adw1-demo/animations.scm
index 0ac8842..7a0b859 100644
--- a/examples/adw-1/adw1-demo/animations.scm
+++ b/examples/adw-1/adw1-demo/animations.scm
@@ -143,7 +143,7 @@
   (spring-animation-clamp-switch #:child-id "spring-animation-clamp-switch"
                                  #:accessor !spring-animation-clamp-switch)
   ;; class options
-  #:template (string-append (dirname (current-filename))
+  #:template (string-append (dirname "/home/florian/src/g-golf/examples/adw-1/adw1-demo/x")
                             "/ui/animations.ui")
   #:child-ids '("timed-animation-button-box"
                 "animation-preferences-stack"
diff --git a/examples/adw-1/adw1-demo/dialogs.scm b/examples/adw-1/adw1-demo/dialogs.scm
index 8d0c737..75a3df0 100644
--- a/examples/adw-1/adw1-demo/dialogs.scm
+++ b/examples/adw-1/adw1-demo/dialogs.scm
@@ -65,7 +65,7 @@
   (dialogs-button #:child-id "dialogs-button"
                   #:accessor !dialogs-button)
   ;; class options
-  #:template (string-append (dirname (current-filename))
+  #:template (string-append (dirname "/home/florian/src/g-golf/examples/adw-1/adw1-demo/x")
                             "/ui/dialogs.ui")
   #:child-ids '("dialogs-button")
   #:g-signal `(add-toast	;; name
diff --git a/examples/adw-1/adw1-demo/navigation-view-demo-dialog.scm b/examples/adw-1/adw1-demo/navigation-view-demo-dialog.scm
index e5212af..9ab1fe7 100644
--- a/examples/adw-1/adw1-demo/navigation-view-demo-dialog.scm
+++ b/examples/adw-1/adw1-demo/navigation-view-demo-dialog.scm
@@ -52,5 +52,5 @@
 (define-class <adw-navigation-view-demo-dialog> (<adw-dialog>)
   ;; slots
   ;; class options
-  #:template (string-append (dirname (current-filename))
+  #:template (string-append (dirname "/home/florian/src/g-golf/examples/adw-1/adw1-demo/x")
                             "/ui/navigation-view-demo-dialog.ui"))
diff --git a/examples/adw-1/adw1-demo/navigation-view.scm b/examples/adw-1/adw1-demo/navigation-view.scm
index 16303de..2d3e1c7 100644
--- a/examples/adw-1/adw1-demo/navigation-view.scm
+++ b/examples/adw-1/adw1-demo/navigation-view.scm
@@ -61,7 +61,7 @@
   (navigation-view-button #:child-id "navigation-view-button"
                           #:accessor !navigation-view-button)
   ;; class options
-  #:template (string-append (dirname (current-filename))
+  #:template (string-append (dirname "/home/florian/src/g-golf/examples/adw-1/adw1-demo/x")
                             "/ui/navigation-view.ui")
   #:child-ids '("navigation-view-button"))
 
diff --git a/examples/adw-1/adw1-demo/preferences.scm b/examples/adw-1/adw1-demo/preferences.scm
index 205c29b..bf4010a 100644
--- a/examples/adw-1/adw1-demo/preferences.scm
+++ b/examples/adw-1/adw1-demo/preferences.scm
@@ -77,7 +77,7 @@
   (subpage-2 #:child-id "subpage-2" #:accessor !subpage-2)
   (subpage-2-bt #:child-id "subpage-2-bt" #:accessor !subpage-2-bt)
   ;; class options
-  #:template (string-append (dirname (current-filename))
+  #:template (string-append (dirname "/home/florian/src/g-golf/examples/adw-1/adw1-demo/x")
                             "/ui/preferences.ui")
 
   #:child-ids '("toast-bt"
diff --git a/examples/adw-1/adw1-demo/style-classes-demo-dialog.scm b/examples/adw-1/adw1-demo/style-classes-demo-dialog.scm
index a7a3fb6..f25f4b3 100644
--- a/examples/adw-1/adw1-demo/style-classes-demo-dialog.scm
+++ b/examples/adw-1/adw1-demo/style-classes-demo-dialog.scm
@@ -83,7 +83,7 @@
   (progress-bar-switch-row #:child-id "progress-bar-switch-row"
                            #:accessor !progress-bar-switch-row)
   ;; class options
-  #:template (string-append (dirname (current-filename))
+  #:template (string-append (dirname "/home/florian/src/g-golf/examples/adw-1/adw1-demo/x")
                             "/ui/style-classes-demo-dialog.ui")
   #:child-ids '("progress-bar"
                 "status-page-dialog"
diff --git a/examples/adw-1/adw1-demo/style-classes.scm b/examples/adw-1/adw1-demo/style-classes.scm
index b908600..0b99110 100644
--- a/examples/adw-1/adw1-demo/style-classes.scm
+++ b/examples/adw-1/adw1-demo/style-classes.scm
@@ -60,7 +60,7 @@
   (style-classes-button #:child-id "style-classes-button"
                         #:accessor !style-classes-button)
   ;; class options
-  #:template (string-append (dirname (current-filename))
+  #:template (string-append (dirname "/home/florian/src/g-golf/examples/adw-1/adw1-demo/x")
                             "/ui/style-classes.ui")
   #:child-ids '("style-classes-button"))
 
diff --git a/examples/adw-1/adw1-demo/welcome.scm b/examples/adw-1/adw1-demo/welcome.scm
index ffde7b5..665f558 100644
--- a/examples/adw-1/adw1-demo/welcome.scm
+++ b/examples/adw-1/adw1-demo/welcome.scm
@@ -47,5 +47,5 @@
 
 
 (define-class <adw-demo-page-welcome> (<adw-bin>)
-  #:template (string-append (dirname (current-filename))
+  #:template (string-append (dirname "/home/florian/src/g-golf/examples/adw-1/adw1-demo/x")
                             "/ui/welcome.ui"))
diff --git a/examples/adw-1/adw1-demo/window.scm b/examples/adw-1/adw1-demo/window.scm
index e824c0a..4c19bc3 100644
--- a/examples/adw-1/adw1-demo/window.scm
+++ b/examples/adw-1/adw1-demo/window.scm
@@ -91,7 +91,7 @@
   (content #:accessor !content #:child-id "content")
   (stack #:accessor !stack #:child-id "stack")
   ;; class options
-  #:template (string-append (dirname (current-filename))
+  #:template (string-append (dirname "/home/florian/src/g-golf/examples/adw-1/adw1-demo/x")
                             "/ui/window.ui")
   #:child-ids '("toast-overlay"
                 "split-view"

base-commit: 482c0693160fba5f4a29214028dc3e9c276693da
-- 
2.41.0


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* Re: GNU G-Golf 0.8.0-rc-3 available for testing
  2024-05-08 10:49                     ` pelzflorian (Florian Pelz)
@ 2024-05-08 21:51                       ` David Pirotte
  0 siblings, 0 replies; 30+ messages in thread
From: David Pirotte @ 2024-05-08 21:51 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: guile-user

[-- Attachment #1: Type: text/plain, Size: 1473 bytes --]

Hi Florian,

> I tried adw1-demo.scm with the attached patch to replace
> (current-filename), which would return #f so (dirname) throws.

> It fails because it cannot find namespaces.  Guix uses libadwaita
> 1.4.0. Is it too old?

Yes, as announced in the NEWS, the release notes, and on the g-golf web
site, you need libadwaita >= 1.5.0

	https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Dialog.html
	...
	since 1.5

David

This reminds me to remind you, for your debian vm installation, you need
to install debian from testing (_not_ stable), which has the g-golf
packages and their required dependencies at the adequate
versions as well - debian offers 4 g-golf packages:

	g-golf				0.8.0-rc2-1
	g-golf-dbgsym			0.8.0-rc2-1
	g-golf-gtk-4-examples	0.8.0-rc2-1
	g-golf-adw-1-examples	0.8.0-rc2-1

	[ so, nearly the latest, but i've noticed it can take up to a
	[ few months so debian releases the upstream releasd version,
	[ which can be too much if you are actively working on a
	[ project ...

So, with the last commentin mind, you might as well decide to install
from the source [and checkout the devel branch] - let me know if you
need help ... but it is well explained (hopefully well explained) in the
INSTALL file, the manual and on the web site ...

Fwiw, i do _not_ install guile from the debian package either, and
obviously work by constantly compiling/installing from my clone devel
branch as well ...


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2024-05-08 21:51 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-17  5:56 GNU G-Golf 0.8.0-rc-3 available for testing David Pirotte
2024-04-17 22:30 ` pelzflorian (Florian Pelz)
2024-04-18 22:21   ` David Pirotte
2024-04-19 17:00     ` pelzflorian (Florian Pelz)
2024-04-20  4:51       ` David Pirotte
2024-04-20  8:35         ` pelzflorian (Florian Pelz)
2024-04-30 17:51         ` pelzflorian (Florian Pelz)
2024-05-01  0:51           ` David Pirotte
2024-05-01  8:17             ` pelzflorian (Florian Pelz)
2024-05-07  1:39               ` David Pirotte
2024-05-07  9:36                 ` pelzflorian (Florian Pelz)
2024-05-07 23:53                   ` David Pirotte
2024-05-08 10:49                     ` pelzflorian (Florian Pelz)
2024-05-08 21:51                       ` David Pirotte
2024-05-02 18:50             ` pelzflorian (Florian Pelz)
2024-05-02 21:57               ` David Pirotte
2024-05-03  5:00                 ` David Pirotte
2024-05-03 11:35                 ` pelzflorian (Florian Pelz)
2024-05-04  5:59                   ` David Pirotte
2024-05-04 14:31                     ` pelzflorian (Florian Pelz)
2024-05-04 18:08                       ` pelzflorian (Florian Pelz)
2024-05-04 22:11                         ` David Pirotte
2024-05-04 22:23                         ` David Pirotte
2024-05-04 21:39                       ` David Pirotte
2024-05-05  1:43                         ` pelzflorian (Florian Pelz)
2024-05-05 21:30                           ` David Pirotte
2024-05-06  9:45                             ` pelzflorian (Florian Pelz)
2024-05-06  9:53                         ` Basile Starynkevitch
2024-05-06 13:08                           ` pelzflorian (Florian Pelz)
2024-05-03  0:17           ` David Pirotte

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).