[OpenIndiana-discuss] Fwd: Add inotify support to illumos-gate

Udo Grabowski (IMK) udo.grabowski at kit.edu
Tue May 9 08:19:58 UTC 2023


On 09/05/2023 07:41, Stephan Althaus wrote:
> On 5/8/23 16:10, Udo Grabowski (IMK) wrote:
>> On 08/05/2023 11:13, Udo Grabowski (IMK) wrote:
>>> On 05/05/2023 09:14, Stephan Althaus wrote:
>>>> Hello!
>>>>
>>>> The hint to use inotify support in glib was from you, can you please 
>>>> shed a
>>>> light on this?
>>>>
>>>> I am lacking all sorts of background on this stuff :-{
>>>>
>>>> To test this, we would have to patch and build inotify support in 
>>>> illumos-gate,
>>>> install it, then compile glib2 with a check if inotify was found and 
>>>> install,
>>>> and then mate-system-monitor... to see if this approach does indeed 
>>>> help.. Is
>>>> there some easier way?
>>>>
>>>> Regards,
>>>> Stephan
>>>>
>>>> -------- Forwarded Message --------
>>>> Subject:     Re: [OpenIndiana-discuss] Add inotify support to 
>>>> illumos-gate
>>>> Date:     Tue, 2 May 2023 20:25:49 +0200
>>>> From:     Till Wegmüller <toasterson at gmail.com>
>>>> Reply-To:     Discussion list for OpenIndiana
>>>> <openindiana-discuss at openindiana.org>
>>>> To:     openindiana-discuss at openindiana.org
>>>>
>>>>
>>>>
>>>> Hi Stephan
>>>>
>>>> inotify has stubbed headers that work roughly decently. Any software 
>>>> should use
>>>> FEN or the Native API. We add it to every programming language we 
>>>> can and should
>>>> also add it to mate-system-monitor or rather make it use kstat if it 
>>>> tries to
>>>> poll things under /proc which it should not for us.
>>>>
>>>> What does mate-system-monitor use inotify for?
>>>> ...
>>>
>>> The parts that use Gio for monitoring in mate-system-monitor are located
>>> in prettytable.cpp, where it monitors its apps-cache, and in 
>>> procman-app.cpp,
>>> where it monitors mounts and somehow uses it to process a 
>>> commandline; that's
>>> also the place it crashes (after complaining about the missing monitor
>>> facility):
>>>
>>> ...
>>
>>
>> And still, even with LD_LIBRARY_PATH set to gcc 10, libgtkmm-3 again
>> loads itself libstdc++.so.6 from gcc 7 AND 10, as well as libgcc_s.so.1
>> from gcc 7 AND 10.
>>
>> And the same problem for libgdkmm-3, and libpangomm-1.4. Probably because
>> software that is still compiled with gcc 7 depends on them.
>>
>> This mixup should be cleared first.
>>
>> All libraries loaded from mate-system-monitor that depend on gcc:
>>
>> ############ /usr/lib/64/libgtkmm-3.0.so.1 ###############
>>         libstdc++.so.6 => /usr/gcc/7/lib/amd64/libstdc++.so.6
>>         libgcc_s.so.1 => /usr/gcc/7/lib/amd64/libgcc_s.so.1
>>         libstdc++.so.6 => /usr/gcc/10/lib/amd64/libstdc++.so.6
>>         libgcc_s.so.1 => /usr/gcc/10/lib/amd64/libgcc_s.so.1
>> ############ /usr/lib/64/libgdkmm-3.0.so.1 ###############
>>         libstdc++.so.6 => /usr/gcc/7/lib/amd64/libstdc++.so.6
>>         libgcc_s.so.1 => /usr/gcc/7/lib/amd64/libgcc_s.so.1
>>         libstdc++.so.6 => /usr/gcc/10/lib/amd64/libstdc++.so.6
>>         libgcc_s.so.1 => /usr/gcc/10/lib/amd64/libgcc_s.so.1
>> ############ /usr/lib/64/libxml2.so.2 ###############
>>         libstdc++.so.6 => /usr/gcc/10/lib/amd64/libstdc++.so.6
>>         libgcc_s.so.1 => /usr/gcc/10/lib/amd64/libgcc_s.so.1
>> ############ /usr/lib/64/librsvg-2.so.2 ###############
>>         libstdc++.so.6 => /usr/gcc/10/lib/amd64/libstdc++.so.6
>>         libgcc_s.so.1 => /usr/gcc/10/lib/amd64/libgcc_s.so.1
>> ############ /usr/lib/64/libgiomm-2.4.so.1 ###############
>>         libstdc++.so.6 => /usr/gcc/10/lib/amd64/libstdc++.so.6
>>         libgcc_s.so.1 => /usr/gcc/10/lib/amd64/libgcc_s.so.1
>> ############ /usr/lib/64/libglibmm-2.4.so.1 ###############
>>         libstdc++.so.6 => /usr/gcc/10/lib/amd64/libstdc++.so.6
>>         libgcc_s.so.1 => /usr/gcc/10/lib/amd64/libgcc_s.so.1
>> ############ /usr/lib/64/libsigc-2.0.so.0 ###############
>>         libstdc++.so.6 => /usr/gcc/10/lib/amd64/libstdc++.so.6
>>         libgcc_s.so.1 => /usr/gcc/10/lib/amd64/libgcc_s.so.1
>> ############ /usr/gcc/10/lib/amd64/libstdc++.so.6 ###############
>>         libgcc_s.so.1 => /usr/gcc/10/lib/amd64/libgcc_s.so.1
>> ############ /usr/lib/64/libatkmm-1.6.so.1 ###############
>>         libstdc++.so.6 => /usr/gcc/10/lib/amd64/libstdc++.so.6
>>         libgcc_s.so.1 => /usr/gcc/10/lib/amd64/libgcc_s.so.1
>> ############ /usr/lib/64/libpangomm-1.4.so.1 ###############
>>         libstdc++.so.6 => /usr/gcc/7/lib/amd64/libstdc++.so.6
>>         libgcc_s.so.1 => /usr/gcc/7/lib/amd64/libgcc_s.so.1
>>         libstdc++.so.6 => /usr/gcc/10/lib/amd64/libstdc++.so.6
>>         libgcc_s.so.1 => /usr/gcc/10/lib/amd64/libgcc_s.so.1
>> ############ /usr/lib/64/libcairomm-1.0.so.1 ###############
>>         libstdc++.so.6 => /usr/gcc/10/lib/amd64/libstdc++.so.6
>>         libgcc_s.so.1 => /usr/gcc/10/lib/amd64/libgcc_s.so.1
>> ############ /usr/lib/64/libicuuc.so.68 ###############
>>         libstdc++.so.6 => /usr/gcc/10/lib/amd64/libstdc++.so.6
>>         libgcc_s.so.1 => /usr/gcc/10/lib/amd64/libgcc_s.so.1
>> ############ /usr/lib/64/libcroco-0.6.so.3 ###############
>>         libstdc++.so.6 => /usr/gcc/10/lib/amd64/libstdc++.so.6
>>         libgcc_s.so.1 => /usr/gcc/10/lib/amd64/libgcc_s.so.1
>>
>>
>>
>> _______________________________________________
>> openindiana-discuss mailing list
>> openindiana-discuss at openindiana.org
>> https://openindiana.org/mailman/listinfo/openindiana-discuss
> 
> Hello!
> 
> The linkage seems to be clean now:
> 
> $ ldd `which mate-system-monitor` |grep 7
> $ ldd `which mate-system-monitor` |grep 10
>          libstdc++.so.6 => /usr/gcc/10/lib/amd64/libstdc++.so.6
>          libgcc_s.so.1 => /usr/gcc/10/lib/amd64/libgcc_s.so.1
> 
> $ mate-system-monitor
> (<unknown>:4252): glibmm-CRITICAL **: 07:37:54.076:
> unhandled exception (type Glib::Error) in signal handler:
> domain: g-io-error-quark
> code  : 0
> what  : Unable to find default local file monitor type
> 
> Segmentation Fault (core dumped)
> 
> $ pstack core
> core 'core' of 4252:    mate-system-monitor
> --------------------- thread# 1 / lwp# 1 ---------------------
>   000000000044b0a1 
> _ZN10ProcmanApp15on_command_lineERKN4Glib6RefPtrIN3Gio22ApplicationCommandLineEEE () + 111
>   00007fff7c789ab0 
> _ZN3Gio17Application_Class21command_line_callbackEP13_GApplicationP24_GApplicationCommandLine () + 160
>   00007fffac4ace5f _g_cclosure_marshal_INT__OBJECTv () + 6f
>   00007fffac79aa08 _g_closure_invoke_va () + 188
>   00007fffac7baf92 g_signal_emit_valist () + 332
>   00007fffac7bc17d g_signal_emit () + 7d
>   00007fffac509933 g_application_call_command_line () + a3
>   00007fffac50bd71 g_application_real_local_command_line () + 211
>   00007fff7c788722 _ZN3Gio11Application24local_command_line_vfuncERPPcRi 
> () + 52
>   00007fff7c78939b 
> _ZN3Gio17Application_Class33local_command_line_vfunc_callbackEP13_GApplicationPPPcPi () + fb
>   00007fffac50bef3 g_application_run () + 133
>   00000000004239f1 main () + 61
>   0000000000422d37 _start_crt () + 87
>   0000000000422c98 _start () + 18
> 
> ...<snip>...

That's exactly what I see, but libgdkmm-3 was not in the list of updated
libraries posted. That one too loads both gcc 7 and 10. You can't see
that from the ldd of mate-system-monitor, you have to hunt down the
dependencies of every library loaded, as I did in my earlier post.


More information about the openindiana-discuss mailing list