View previous topic :: View next topic |
Author |
Message |
ONEEYEMAN Advocate
Joined: 01 Mar 2005 Posts: 3650
|
Posted: Sun Sep 15, 2024 12:41 am Post subject: GIO failure in C++ but runs perfectly from Terminal |
|
|
Hi, ALL,
Code: |
igor@WaylandGnome ~/dbhandler $ gio mount --list --detail
Drive(0): HGST HTS721010A9E630
Type: GProxyDrive (GProxyVolumeMonitorUDisks2)
ids:
unix-device: '/dev/sda'
themed icons: [drive-harddisk] [drive] [drive-harddisk-symbolic] [drive-symbolic]
symbolic themed icons: [drive-harddisk-symbolic] [drive-symbolic] [drive-harddisk] [drive]
is_removable=0
is_media_removable=0
has_media=1
is_media_check_automatic=1
can_poll_for_media=0
can_eject=0
can_start=0
can_stop=0
start_stop_type=shutdown
sort_key=00coldplug/00fixed/sd____a
|
This runs from Terminal and gives me some info.
However when I try to call it from my C++ software, it fails:
Code: |
(gdb)
16 auto monitor = g_volume_monitor_get();
(gdb)
17 GList *volumelist = g_volume_monitor_get_volumes( monitor ), *volumes;
(gdb) p monitor
$1 = 0x555555ee6a20
(gdb) n
18 for( volumes = volumelist; volumes != NULL; volumes = volumes->next )
(gdb) p volumelist
$2 = 0x0
|
What could be the reason?
And more interestingly - where can I find the code for the gio functions?
Maybe all I need is to reinstall something with the "debug" USE-flag and try to run gdb on my program?
Thank you.
EDIT:
Forgot to mention:
GTK 3.24.29 on X/GNOME. |
|
Back to top |
|
|
netfab Veteran
Joined: 03 Mar 2005 Posts: 1957 Location: 127.0.0.1
|
|
Back to top |
|
|
ONEEYEMAN Advocate
Joined: 01 Mar 2005 Posts: 3650
|
Posted: Sun Sep 15, 2024 4:54 pm Post subject: |
|
|
Hi,
Could someone please explain the following:
Code: |
igor@WaylandGnome ~/wxFork/buildGTK/tests $ python
Python 3.11.8 (main, Mar 24 2024, 02:40:39) [GCC 10.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import gi
>>> from gi.repository import Gio
>>> volume_monitor = Gio.VolumeMonitor.get()
>>> print(f'Number of drives: {len(volume_monitor.get_connected_drives())}')
Number of drives: 1
>>> print(f'Number of drives: {len(volume_monitor.get_volumes())}')
Number of drives: 0
>>> print(f'Number of drives: {len(volume_monitor.get_mounts())}')
Number of drives: 0
>>>
|
I have a drive connected, but it is not mounted?
How is it possible?
My dev-libs/glib is at 2.78.3.
Thank you. |
|
Back to top |
|
|
netfab Veteran
Joined: 03 Mar 2005 Posts: 1957 Location: 127.0.0.1
|
Posted: Sun Sep 15, 2024 6:52 pm Post subject: |
|
|
I'm getting a similar result :
Code: |
$ python
Python 3.12.3 (main, Jun 10 2024, 12:32:47) [GCC 13.2.1 20240210] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import gi
>>> from gi.repository import Gio
>>> volume_monitor = Gio.VolumeMonitor.get()
>>> print(f'Number of drives: {len(volume_monitor.get_connected_drives())}')
Number of drives: 8
>>> print(f'Number of drives: {len(volume_monitor.get_volumes())}')
Number of drives: 0
>>> print(f'Number of drives: {len(volume_monitor.get_mounts())}')
Number of drives: 0
|
I guess that connected_drives and mounts definitions in glib are not what we expect. |
|
Back to top |
|
|
ONEEYEMAN Advocate
Joined: 01 Mar 2005 Posts: 3650
|
Posted: Mon Sep 16, 2024 6:09 pm Post subject: |
|
|
Hi,
I will try to set up my machine for debugging glib according to the instructions here and see what is happening..
Unless you will beat me to it...
Thank you. |
|
Back to top |
|
|
netfab Veteran
Joined: 03 Mar 2005 Posts: 1957 Location: 127.0.0.1
|
Posted: Tue Sep 17, 2024 10:17 pm Post subject: |
|
|
Hi,
It seems that all mounted partitions are hidden by default in gvfs and then in gio utility (don't ask me why).
If you add comment=x-gvfs-show in your fstab to the partitions options :
Code: |
$ grep x-gvfs-show /etc/fstab
UUID=f0853ad0-1c8f-45c1-ac54-6d059acd66e9 / ext4 noatime,comment=x-gvfs-show 0 1
UUID=2c2c456d-1a0b-4ebc-bde9-a798e961c6c6 /home ext4 noatime,comment=x-gvfs-show 0 2
192.168.1.77:/ /data/cubieboard2 nfs4 rw,noatime,soft,retry=0,comment=x-gvfs-show 0 0
|
The result is different :
Code: |
$ python
Python 3.12.3 (main, Jun 10 2024, 12:32:47) [GCC 13.2.1 20240210] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import gi
>>> from gi.repository import Gio
>>> volume_monitor = Gio.VolumeMonitor.get()
>>> print(f'Number of drives: {len(volume_monitor.get_connected_drives())}')
Number of drives: 8
>>> print(f'Number of volumes: {len(volume_monitor.get_volumes())}')
Number of volumes: 3
>>> print(f'Number of mounts: {len(volume_monitor.get_mounts())}')
Number of mounts: 3
|
|
|
Back to top |
|
|
ONEEYEMAN Advocate
Joined: 01 Mar 2005 Posts: 3650
|
Posted: Wed Sep 18, 2024 12:44 am Post subject: |
|
|
Hi,
Yes, thank you.
Mystery solved.
|
|
Back to top |
|
|
ONEEYEMAN Advocate
Joined: 01 Mar 2005 Posts: 3650
|
Posted: Wed Sep 18, 2024 4:46 am Post subject: |
|
|
Hi,
netfab wrote: |
Hi,
It seems that all mounted partitions are hidden by default in gvfs and then in gio utility (don't ask me why).
If you add comment=x-gvfs-show in your fstab to the partitions options :
Code: |
$ grep x-gvfs-show /etc/fstab
UUID=f0853ad0-1c8f-45c1-ac54-6d059acd66e9 / ext4 noatime,comment=x-gvfs-show 0 1
UUID=2c2c456d-1a0b-4ebc-bde9-a798e961c6c6 /home ext4 noatime,comment=x-gvfs-show 0 2
192.168.1.77:/ /data/cubieboard2 nfs4 rw,noatime,soft,retry=0,comment=x-gvfs-show 0 0
|
The result is different :
Code: |
$ python
Python 3.12.3 (main, Jun 10 2024, 12:32:47) [GCC 13.2.1 20240210] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import gi
>>> from gi.repository import Gio
>>> volume_monitor = Gio.VolumeMonitor.get()
>>> print(f'Number of drives: {len(volume_monitor.get_connected_drives())}')
Number of drives: 8
>>> print(f'Number of volumes: {len(volume_monitor.get_volumes())}')
Number of volumes: 3
>>> print(f'Number of mounts: {len(volume_monitor.get_mounts())}')
Number of mounts: 3
|
|
Yes with that modifications it works correctly.
Moreover, some system do mount "shown" partitions during the boot-up.
Thank you for a suggestion. |
|
Back to top |
|
|
netfab Veteran
Joined: 03 Mar 2005 Posts: 1957 Location: 127.0.0.1
|
Posted: Wed Sep 18, 2024 7:58 am Post subject: |
|
|
This behavior is documented in a txt file in gvfs repository :
Code: |
CONTROLLING WHAT IS SHOWN IN THE USER INTERFACE
===============================================
The gvfs-udisks2-volume-monitor process is responsible for the disks,
media, mounts and fstab entries shown in the desktop user
interface.
[...]
If the directory for a device is known and outside /media, $HOME
(typically /home/foo) or /run/media/$USER then the device is not shown
in the user interface. Additionally, if any of component directories
in its directory starts with a dot ("."), the device is not shown
either. This policy may be overriden by use of the options x-gvfs-show
and x-gvfs-hide.
[...]
|
|
|
Back to top |
|
|
|