Comment 20 for bug 1666264

Revision history for this message
Thorsten (thorstenr-42) wrote :

Hi everyone,

I don't know which is the right place to post this, but the discussion here seems to be the most appropriate for bringing this up.

I looked more into the tilix warnings. After all, the warnings seem to be caused by the vte lib and especially in the reverted parts.
Therefore, I downloaded the source with apt-get source libvte-2.91-0 and printed the arguments of line 1906 which triggers the warnings.

#include <stdio.h> (at the top of the file)
printf("arguments: %d %d %d\n", g_regex_get_compile_flags(gregex),
                                G_REGEX_MULTILINE,
                                g_regex_get_compile_flags(gregex) & G_REGEX_MULTILINE);

So I started tilix and looked at the output:

arguments: 1 2 0

(tilix:5596): Vte-WARNING **: 10:32:57.957: (../../src/vtegtk.cc:1905):int vte_terminal_match_add_gregex(VteTerminal*, GRegex*, GRegexMatchFlags): runtime check failed: (g_regex_get_compile_flags(gregex) & G_REGEX_MULTILINE)
warning should be printed
arguments: 1 2 0

(tilix:5596): Vte-WARNING **: 10:32:57.957: (../../src/vtegtk.cc:1905):int vte_terminal_match_add_gregex(VteTerminal*, GRegex*, GRegexMatchFlags): runtime check failed: (g_regex_get_compile_flags(gregex) & G_REGEX_MULTILINE)
warning should be printed
arguments: 1 2 0

(tilix:5596): Vte-WARNING **: 10:32:57.957: (../../src/vtegtk.cc:1905):int vte_terminal_match_add_gregex(VteTerminal*, GRegex*, GRegexMatchFlags): runtime check failed: (g_regex_get_compile_flags(gregex) & G_REGEX_MULTILINE)
warning should be printed
arguments: 1 2 0

(tilix:5596): Vte-WARNING **: 10:32:57.957: (../../src/vtegtk.cc:1905):int vte_terminal_match_add_gregex(VteTerminal*, GRegex*, GRegexMatchFlags): runtime check failed: (g_regex_get_compile_flags(gregex) & G_REGEX_MULTILINE)
warning should be printed
arguments: 1 2 0

(tilix:5596): Vte-WARNING **: 10:32:57.957: (../../src/vtegtk.cc:1905):int vte_terminal_match_add_gregex(VteTerminal*, GRegex*, GRegexMatchFlags): runtime check failed: (g_regex_get_compile_flags(gregex) & G_REGEX_MULTILINE)
warning should be printed
arguments: 1 2 0

(tilix:5596): Vte-WARNING **: 10:32:57.957: (../../src/vtegtk.cc:1905):int vte_terminal_match_add_gregex(VteTerminal*, GRegex*, GRegexMatchFlags): runtime check failed: (g_regex_get_compile_flags(gregex) & G_REGEX_MULTILINE)
warning should be printed

As you can see both arguments itself are true. But why is a "bitwise and" used in g_warn_if_fail()? Since the first is 1 and the second 2, this causes 00000010 & 00000001 -> 00000000 and the warning is triggered?

So what I did and propose is to replace the "bitwise and" with a "logical or". This causes that the warning is only triggered if one of both arguments is false. -> The tilix warning is gone and everything seems work for me!

This line is created by the ubuntu specific patch "revert-pcre2.patch" and in this file in line 1065

Just for letting you know which part of tilix calls this function:
In the constructor in the file terminal.d the function applyPreferences() is called. There in the switch statement
the case SETTINGS_ALL_CUSTOM_HYPERLINK_KEY is calling loadRegex() which calls the vte function vte_terminal_match_add_gregex 6 times and triggers the 6 warnings.