Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

core at regex_search

76 views
Skip to first unread message

Jivanmukta

unread,
Dec 19, 2023, 1:21:19 AM12/19/23
to
I have core dumped at regex_search() call:
regex re1(regexp1, regex_constants::icase);
smatch matches;
string line, ...;
...
TRACE("before regex_search; line len: " <<
line.length() << ", regexp1 len: " << regexp1.length() << ", regexp1: "
<< regexp1);
if (line != "" && regex_search(line, matches, re1) &&
matches.ready()) {
TRACE("after regex_search"); // NOT ACHIEVED
}
TRACE("after if with regex_search"); // NOT ACHIEVED

src/obfuscator.cpp (2498), remember_identifiers: before regex_search;
line len: 22109, regexp1 len: 110, regexp1:
(static|private|protected|public)?\s*(readonly)?\s*([_a-zA-Z0-9]+)?\s*(\$([a-zA-Z_][a-zA-Z0-9_]*)\s*=.*,?\s*)+

As you see line is long and regex is complex.

--
Ta wiadomość e-mail została sprawdzona pod kątem wirusów przez oprogramowanie antywirusowe AVG.
www.avg.com

Jivanmukta

unread,
Dec 19, 2023, 1:26:45 AM12/19/23
to
I use gcc (tdm64-1) 10.3.0 in Windows 10.

immibis

unread,
Dec 19, 2023, 8:32:13 AM12/19/23
to
On 12/19/23 07:08, Jivanmukta wrote:
> I have core dumped at regex_search() call:
>                 regex re1(regexp1, regex_constants::icase);
>                 smatch matches;
>                 string line, ...;
>         ...
>                 TRACE("before regex_search; line len: " <<
> line.length() << ", regexp1 len: " << regexp1.length() << ", regexp1: "
> << regexp1);
>                 if (line != "" && regex_search(line, matches, re1) &&
> matches.ready()) {
>             TRACE("after regex_search"); // NOT ACHIEVED
>         }
>                 TRACE("after if with regex_search"); // NOT ACHIEVED
>
> src/obfuscator.cpp (2498), remember_identifiers: before regex_search;
> line len: 22109, regexp1 len: 110, regexp1:
> (static|private|protected|public)?\s*(readonly)?\s*([_a-zA-Z0-9]+)?\s*(\$([a-zA-Z_][a-zA-Z0-9_]*)\s*=.*,?\s*)+
>
> As you see line is long and regex is complex.
>

I don't know your full situation, but I'll note that a regex with lots
of ambiguous matches followed by something that doesn't match can be a
problem to some regex engines.

To simplify your regex, you are matching: stuff($identifier=anything,?)+
And I'll ignore the front stuff because it's easy to match.

anything can match anything, including a comma, and another
$identifier=anything.

If your line is something like: stuff $a=aval,$b=bval,$c=cval,$d=dval
then it can match in a lot of different ways, such as: (using
parentheses to show what matches the .*)
stuff $a=(aval,$b=bval,$c=cval,$d=dval)
stuff $a=(aval),$b=(bval,$c=cval,$d=dval)
stuff $a=(aval,$b=bval),$c=(cval,$d=dval)
stuff $a=(aval,$b=bval),$c=(cval),$d=(dval)
stuff $a=(aval,$b=bval,)$c=(cval,)$d=(dval)

If there's something at the end of the line that doesn't match
(actually, this is not possible with this regex) the regex engine may
have to try every possible way to match ($identifier=anything,?) before
seeing that the line doesn't match overall.

This wouldn't cause a core dump, but I hope it shows that being careful
with regexes matters.

For your situation have you tried creating a minimal example? Not just
for the benefit of asking questions, but also because you often find the
solution in the process of making the example minimal. You can take this
regex search and put it in a new program by itself, with the 22109
character line. If it doesn't crash, the problem is something else in
your program (maybe memory corruption). If it does crash, you can start
removing parts of the line or the regex until it doesn't crash. Then you
know the problem is the last thing you removed.

Jivanmukta

unread,
Dec 19, 2023, 1:40:15 PM12/19/23
to
The problem occurs in my program (although at https://regexr.com/ is OK)
for the line:

protected static $firstNameFemale = ['Aagot', 'Abela', 'Abigael', 'Ada',
'Adda', 'Addý', 'Adela', 'Adelía', 'Adríana', 'Aðalbjörg', 'Aðalbjört',
'Aðalborg', 'Aðaldís', 'Aðalfríður', 'Aðalheiður', 'Aðalrós',
'Aðalsteina', 'Aðalsteinunn', 'Aðalveig', 'Agata', 'Agatha', 'Agða',
'Agla', 'Agnea', 'Agnes', 'Agneta', 'Alanta', 'Alba', 'Alberta',
'Albína', 'Alda', 'Aldís', 'Aldný', 'Aleta', 'Aletta', 'Alexa',
'Alexandra', 'Alexandría', 'Alexis', 'Alexía', 'Alfa', 'Alfífa',
'Alice', 'Alida', 'Alída', 'Alína', 'Alís', 'Alísa', 'Alla', 'Allý',
'Alma', 'Alrún', 'Alva', 'Alvilda', 'Amadea', 'Amal', 'Amalía',
'Amanda', 'Amelía', 'Amilía', 'Amíra', 'Amy', 'Amý', 'Analía',
'Anastasía', 'Andra', 'Andrá', 'Andrea', 'Anetta', 'Angela', 'Angelíka',
'Anika', 'Anita', 'Aníka', 'Anína', 'Aníta', 'Anja', 'Ann', 'Anna',
'Annabella', 'Annalísa', 'Anne', 'Annelí', 'Annetta', 'Anney', 'Annika',
'Annía', 'Anný', 'Antonía', 'Apríl', 'Ardís', 'Arey', 'Arinbjörg',
'Aris', 'Arisa', 'Aría', 'Aríanna', 'Aríella', 'Arín', 'Arína', 'Arís',
'Armenía', 'Arna', 'Arnbjörg', 'Arnborg', 'Arndís', 'Arney', 'Arnfinna',
'Arnfríður', 'Arngerður', 'Arngunnur', 'Arnheiður', 'Arnhildur',
'Arnika', 'Arnkatla', 'Arnlaug', 'Arnleif', 'Arnlín', 'Arnljót',
'Arnóra', 'Arnrós', 'Arnrún', 'Arnþóra', 'Arnþrúður', 'Asírí', 'Askja',
'Assa', 'Astrid', 'Atalía', 'Atena', 'Athena', 'Atla', 'Atlanta',
'Auðbjörg', 'Auðbjört', 'Auðdís', 'Auðlín', 'Auðna', 'Auðný', 'Auðrún',
'Auður', 'Aurora', 'Axelía', 'Axelma', 'Aþena', 'Ágústa', 'Ágústína',
'Álfdís', 'Álfey', 'Álfgerður', 'Álfheiður', 'Álfhildur', 'Álfrós',
'Álfrún', 'Álfsól', 'Árbjörg', 'Árbjört', 'Árdís', 'Árelía', 'Árlaug',
'Ármey', 'Árna', 'Árndís', 'Árney', 'Árnheiður', 'Árnína', 'Árný',
'Áróra', 'Ársól', 'Ársæl', 'Árún', 'Árveig', 'Árvök', 'Árþóra', 'Ása',
'Ásbjörg', 'Ásborg', 'Ásdís', 'Ásfríður', 'Ásgerður', 'Áshildur',
'Áskatla', 'Ásla', 'Áslaug', 'Ásleif', 'Ásný', 'Ásrós', 'Ásrún', 'Ást',
'Ásta', 'Ástbjörg', 'Ástbjört', 'Ástdís', 'Ástfríður', 'Ástgerður',
'Ástheiður', 'Ásthildur', 'Ástríður', 'Ástrós', 'Ástrún', 'Ástveig',
'Ástþóra', 'Ástþrúður', 'Ásvör', 'Baldey', 'Baldrún', 'Baldvina',
'Barbara', 'Barbára', 'Bassí', 'Bára', 'Bebba', 'Begga', 'Belinda',
'Bella', 'Benedikta', 'Bengta', 'Benidikta', 'Benía', 'Beníta', 'Benna',
'Benney', 'Benný', 'Benta', 'Bentey', 'Bentína', 'Bera', 'Bergdís',
'Bergey', 'Bergfríður', 'Bergheiður', 'Berghildur', 'Berglaug',
'Berglind', 'Berglín', 'Bergljót', 'Bergmannía', 'Bergný', 'Bergrán',
'Bergrín', 'Bergrós', 'Bergrún', 'Bergþóra', 'Berit', 'Bernódía',
'Berta', 'Bertha', 'Bessí', 'Bestla', 'Beta', 'Betanía', 'Betsý',
'Bettý', 'Bil', 'Birgit', 'Birgitta', 'Birna', 'Birta', 'Birtna',
'Bíbí', 'Bína', 'Bjargdís', 'Bjargey', 'Bjargheiður', 'Bjarghildur',
'Bjarglind', 'Bjarkey', 'Bjarklind', 'Bjarma', 'Bjarndís', 'Bjarney',
'Bjarnfríður', 'Bjarngerður', 'Bjarnheiður', 'Bjarnhildur', 'Bjarnlaug',
'Bjarnrún', 'Bjarnveig', 'Bjarný', 'Bjarnþóra', 'Bjarnþrúður',
'Bjartey', 'Bjartmey', 'Björg', 'Björgey', 'Björgheiður', 'Björghildur',
'Björk', 'Björney', 'Björnfríður', 'Björt', 'Bláey', 'Blíða', 'Blín',
'Blómey', 'Blædís', 'Blær', 'Bobba', 'Boga', 'Bogdís', 'Bogey', 'Bogga',
'Boghildur', 'Borg', 'Borgdís', 'Borghildur', 'Borgný', 'Borgrún',
'Borgþóra', 'Botnía', 'Bóel', 'Bót', 'Bóthildur', 'Braga', 'Braghildur',
'Branddís', 'Brá', 'Brák', 'Brigitta', 'Brimdís', 'Brimhildur',
'Brimrún', 'Brit', 'Britt', 'Britta', 'Bríana', 'Bríanna', 'Bríet',
'Bryndís', 'Brynfríður', 'Bryngerður', 'Brynheiður', 'Brynhildur',
'Brynja', 'Brynný', 'Burkney', 'Bylgja', 'Camilla', 'Carla', 'Carmen',
'Cecilia', 'Cecilía', 'Charlotta', 'Charlotte', 'Christina',
'Christine', 'Clara', 'Daðey', 'Daðína', 'Dagbjörg', 'Dagbjört',
'Dagfríður', 'Daggrós', 'Dagheiður', 'Dagmar', 'Dagmey', 'Dagný',
'Dagrún', 'Daldís', 'Daley', 'Dalía', 'Dalla', 'Dallilja', 'Dalrós',
'Dana', 'Daney', 'Danfríður', 'Danheiður', 'Danhildur', 'Danía',
'Daníela', 'Daníella', 'Dara', 'Debora', 'Debóra', 'Dendý', 'Didda',
'Dilja', 'Diljá', 'Dimmblá', 'Dimmey', 'Día', 'Díana', 'Díanna', 'Díma',
'Dís', 'Dísa', 'Dísella', 'Donna', 'Doris', 'Dorothea', 'Dóa',
'Dómhildur', 'Dóra', 'Dórey', 'Dóris', 'Dórothea', 'Dórótea',
'Dóróthea', 'Drauma', 'Draumey', 'Drífa', 'Droplaug', 'Drótt', 'Dröfn',
'Dúa', 'Dúfa', 'Dúna', 'Dýrborg', 'Dýrfinna', 'Dýrleif', 'Dýrley',
'Dýrunn', 'Dæja', 'Dögg', 'Dögun', 'Ebba', 'Ebonney', 'Edda', 'Edel',
'Edil', 'Edit', 'Edith', 'Eðna', 'Efemía', 'Egedía', 'Eggrún', 'Egla',
'Eiðný', 'Eiðunn', 'Eik', 'Einbjörg', 'Eindís', 'Einey', 'Einfríður',
'Einhildur', 'Einína', 'Einrún', 'Eir', 'Eirdís', 'Eirfinna', 'Eiríka',
'Eirný', 'Eirún', 'Elba', 'Eldbjörg', 'Eldey', 'Eldlilja', 'Eldrún',
'Eleina', 'Elektra', 'Elena', 'Elenborg', 'Elfa', 'Elfur', 'Elina',
'Elinborg', 'Elisabeth', 'Elía', 'Elíana', 'Elín', 'Elína', 'Elíná',
'Elínbet', 'Elínbjörg', 'Elínbjört', 'Elínborg', 'Elíndís',
'Elíngunnur', 'Elínheiður', 'Elínrós', 'Elírós', 'Elísa', 'Elísabet',
'Elísabeth', 'Elka', 'Ella', 'Ellen', 'Elley', 'Ellisif', 'Ellín',
'Elly', 'Ellý', 'Elma', 'Elna', 'Elsa', 'Elsabet', 'Elsie', 'Elsí',
'Elsý', 'Elva', 'Elvi', 'Elvíra', 'Elvý', 'Embla', 'Emelía', 'Emelíana',
'Emelína', 'Emeralda', 'Emilía', 'Emilíana', 'Emilíanna', 'Emilý',
'Emma', 'Emmý', 'Emý', 'Enea', 'Eneka', 'Engilbjört', 'Engilráð',
'Engilrós', 'Engla', 'Enika', 'Enja', 'Enóla', 'Eres', 'Erika', 'Erin',
'Erla', 'Erlen', 'Erlín', 'Erna', 'Esja', 'Esmeralda', 'Ester',
'Esther', 'Estiva', 'Ethel', 'Etna', 'Eufemía', 'Eva', 'Evelyn', 'Evey',
'Evfemía', 'Evgenía', 'Evíta', 'Evlalía', 'Ey', 'Eybjörg', 'Eybjört',
'Eydís', 'Eyfríður', 'Eygerður', 'Eygló', 'Eyhildur', 'Eyja', 'Eyjalín',
'Eyleif', 'Eylín', 'Eyrós', 'Eyrún', 'Eyveig', 'Eyvör', 'Eyþóra',
'Eyþrúður', 'Fanndís', 'Fanney', 'Fannlaug', 'Fanny', 'Fanný', 'Febrún',
'Fema', 'Filipía', 'Filippa', 'Filippía', 'Finna', 'Finnbjörg',
'Finnbjörk', 'Finnboga', 'Finnborg', 'Finndís', 'Finney', 'Finnfríður',
'Finnlaug', 'Finnrós', 'Fía', 'Fídes', 'Fífa', 'Fjalldís', 'Fjóla',
'Flóra', 'Folda', 'Fransiska', 'Franziska', 'Frán', 'Fregn', 'Freydís',
'Freygerður', 'Freyja', 'Freylaug', 'Freyleif', 'Friðbjörg',
'Friðbjört', 'Friðborg', 'Friðdís', 'Friðdóra', 'Friðey', 'Friðfinna',
'Friðgerður', 'Friðjóna', 'Friðlaug', 'Friðleif', 'Friðlín', 'Friðmey',
'Friðný', 'Friðrika', 'Friðrikka', 'Friðrós', 'Friðrún', 'Friðsemd',
'Friðveig', 'Friðþóra', 'Frigg', 'Fríða', 'Fríður', 'Frostrós',
'Fróðný', 'Fura', 'Fönn', 'Gabríela', 'Gabríella', 'Gauja',
'Gauthildur', 'Gefjun', 'Gefn', 'Geira', 'Geirbjörg', 'Geirdís',
'Geirfinna', 'Geirfríður', 'Geirhildur', 'Geirlaug', 'Geirlöð',
'Geirný', 'Geirríður', 'Geirrún', 'Geirþrúður', 'Georgía', 'Gerða',
'Gerður', 'Gestheiður', 'Gestný', 'Gestrún', 'Gillý', 'Gilslaug',
'Gissunn', 'Gía', 'Gígja', 'Gísela', 'Gísla', 'Gísley', 'Gíslína',
'Gíslný', 'Gíslrún', 'Gíslunn', 'Gíta', 'Gjaflaug', 'Gloría', 'Gló',
'Glóa', 'Glóbjört', 'Glódís', 'Glóð', 'Glóey', 'Gná', 'Góa', 'Gógó',
'Grein', 'Gret', 'Greta', 'Grélöð', 'Grét', 'Gréta', 'Gríma', 'Grímey',
'Grímheiður', 'Grímhildur', 'Gróa', 'Guðbjörg', 'Guðbjört', 'Guðborg',
'Guðdís', 'Guðfinna', 'Guðfríður', 'Guðjóna', 'Guðlaug', 'Guðleif',
'Guðlín', 'Guðmey', 'Guðmunda', 'Guðmundína', 'Guðný', 'Guðríður',
'Guðrún', 'Guðsteina', 'Guðveig', 'Gullbrá', 'Gullveig', 'Gullý',
'Gumma', 'Gunnbjörg', 'Gunnbjört', 'Gunnborg', 'Gunndís', 'Gunndóra',
'Gunnella', 'Gunnfinna', 'Gunnfríður', 'Gunnharða', 'Gunnheiður',
'Gunnhildur', 'Gunnjóna', 'Gunnlaug', 'Gunnleif', 'Gunnlöð', 'Gunnrún',
'Gunnur', 'Gunnveig', 'Gunnvör', 'Gunný', 'Gunnþóra', 'Gunnþórunn',
'Gurrý', 'Gúa', 'Gyða', 'Gyðja', 'Gyðríður', 'Gytta', 'Gæfa', 'Gæflaug',
'Hadda', 'Haddý', 'Hafbjörg', 'Hafborg', 'Hafdís', 'Hafey', 'Hafliða',
'Haflína', 'Hafný', 'Hafrós', 'Hafrún', 'Hafsteina', 'Hafþóra', 'Halla',
'Hallbera', 'Hallbjörg', 'Hallborg', 'Halldís', 'Halldóra', 'Halley',
'Hallfríður', 'Hallgerður', 'Hallgunnur', 'Hallkatla', 'Hallný',
'Hallrún', 'Hallveig', 'Hallvör', 'Hanna', 'Hanney', 'Hansa', 'Hansína',
'Harpa', 'Hauður', 'Hákonía', 'Heba', 'Hedda', 'Hedí', 'Heiða',
'Heiðbjörg', 'Heiðbjörk', 'Heiðbjört', 'Heiðbrá', 'Heiðdís', 'Heiðlaug',
'Heiðlóa', 'Heiðný', 'Heiðrós', 'Heiðrún', 'Heiður', 'Heiðveig',
'Hekla', 'Helen', 'Helena', 'Helga', 'Hella', 'Helma', 'Hendrikka',
'Henný', 'Henrietta', 'Henrika', 'Henríetta', 'Hera', 'Herbjörg',
'Herbjört', 'Herborg', 'Herdís', 'Herfríður', 'Hergerður', 'Herlaug',
'Hermína', 'Hersilía', 'Herta', 'Hertha', 'Hervör', 'Herþrúður',
'Hilda', 'Hildegard', 'Hildibjörg', 'Hildigerður', 'Hildigunnur',
'Hildiríður', 'Hildisif', 'Hildur', 'Hilma', 'Himinbjörg', 'Hind',
'Hinrika', 'Hinrikka', 'Hjalta', 'Hjaltey', 'Hjálmdís', 'Hjálmey',
'Hjálmfríður', 'Hjálmgerður', 'Hjálmrós', 'Hjálmrún', 'Hjálmveig',
'Hjördís', 'Hjörfríður', 'Hjörleif', 'Hjörný', 'Hjörtfríður',
'Hlaðgerður', 'Hlédís', 'Hlíf', 'Hlín', 'Hlökk', 'Hólmbjörg', 'Hólmdís',
'Hólmfríður', 'Hrafna', 'Hrafnborg', 'Hrafndís', 'Hrafney',
'Hrafngerður', 'Hrafnheiður', 'Hrafnhildur', 'Hrafnkatla', 'Hrafnlaug',
'Hrafntinna', 'Hraundís', 'Hrefna', 'Hreindís', 'Hróðný', 'Hrólfdís',
'Hrund', 'Hrönn', 'Hugbjörg', 'Hugbjört', 'Hugborg', 'Hugdís',
'Hugljúf', 'Hugrún', 'Huld', 'Hulda', 'Huldís', 'Huldrún', 'Húnbjörg',
'Húndís', 'Húngerður', 'Hvönn', 'Hödd', 'Högna', 'Hörn', 'Ida', 'Idda',
'Iða', 'Iðunn', 'Ilmur', 'Immý', 'Ina', 'Inda', 'India', 'Indiana',
'Indía', 'Indíana', 'Indíra', 'Indra', 'Inga', 'Ingdís', 'Ingeborg',
'Inger', 'Ingey', 'Ingheiður', 'Inghildur', 'Ingibjörg', 'Ingibjört',
'Ingiborg', 'Ingifinna', 'Ingifríður', 'Ingigerður', 'Ingilaug',
'Ingileif', 'Ingilín', 'Ingimaría', 'Ingimunda', 'Ingiríður', 'Ingirós',
'Ingisól', 'Ingiveig', 'Ingrid', 'Ingrún', 'Ingunn', 'Ingveldur',
'Inna', 'Irena', 'Irene', 'Irja', 'Irma', 'Irmý', 'Irpa', 'Isabel',
'Isabella', 'Ída', 'Íma', 'Ína', 'Ír', 'Íren', 'Írena', 'Íris', 'Írunn',
'Ísabel', 'Ísabella', 'Ísadóra', 'Ísafold', 'Ísalind', 'Ísbjörg',
'Ísdís', 'Ísey', 'Ísfold', 'Ísgerður', 'Íshildur', 'Ísis', 'Íslaug',
'Ísleif', 'Ísmey', 'Ísold', 'Ísól', 'Ísrún', 'Íssól', 'Ísveig', 'Íunn',
'Íva', 'Jakobína', 'Jana', 'Jane', 'Janetta', 'Jannika', 'Jara',
'Jarún', 'Jarþrúður', 'Jasmín', 'Járnbrá', 'Járngerður', 'Jenetta',
'Jenna', 'Jenný', 'Jensína', 'Jessý', 'Jovina', 'Jóa', 'Jóanna',
'Jódís', 'Jófríður', 'Jóhanna', 'Jólín', 'Jóna', 'Jónanna', 'Jónasína',
'Jónbjörg', 'Jónbjört', 'Jóndís', 'Jóndóra', 'Jóney', 'Jónfríður',
'Jóngerð', 'Jónheiður', 'Jónhildur', 'Jóninna', 'Jónída', 'Jónína',
'Jónný', 'Jóný', 'Jóra', 'Jóríður', 'Jórlaug', 'Jórunn', 'Jósebína',
'Jósefín', 'Jósefína', 'Judith', 'Júdea', 'Júdit', 'Júlía', 'Júlíana',
'Júlíanna', 'Júlíetta', 'Júlírós', 'Júnía', 'Júníana', 'Jökla',
'Jökulrós', 'Jörgína', 'Kaðlín', 'Kaja', 'Kalla', 'Kamilla', 'Kamí',
'Kamma', 'Kapitola', 'Kapítóla', 'Kara', 'Karen', 'Karin', 'Karitas',
'Karí', 'Karín', 'Karína', 'Karítas', 'Karla', 'Karlinna', 'Karlína',
'Karlotta', 'Karolína', 'Karó', 'Karólín', 'Karólína', 'Kassandra',
'Kata', 'Katarína', 'Katerína', 'Katharina', 'Kathinka', 'Katinka',
'Katla', 'Katrín', 'Katrína', 'Katý', 'Kára', 'Kellý', 'Kendra',
'Ketilbjörg', 'Ketilfríður', 'Ketilríður', 'Kiddý', 'Kira', 'Kirsten',
'Kirstín', 'Kittý', 'Kjalvör', 'Klara', 'Kládía', 'Klementína',
'Kleópatra', 'Kolbjörg', 'Kolbrá', 'Kolbrún', 'Koldís', 'Kolfinna',
'Kolfreyja', 'Kolgríma', 'Kolka', 'Konkordía', 'Konný', 'Korka',
'Kormlöð', 'Kornelía', 'Kókó', 'Krista', 'Kristbjörg', 'Kristborg',
'Kristel', 'Kristensa', 'Kristey', 'Kristfríður', 'Kristgerður',
'Kristin', 'Kristine', 'Kristíana', 'Kristíanna', 'Kristín', 'Kristína',
'Kristjana', 'Kristjóna', 'Kristlaug', 'Kristlind', 'Kristlín',
'Kristný', 'Kristólína', 'Kristrós', 'Kristrún', 'Kristveig',
'Kristvina', 'Kristþóra', 'Kría', 'Kæja', 'Laila', 'Laíla', 'Lana',
'Lara', 'Laufey', 'Laufheiður', 'Laufhildur', 'Lauga', 'Laugey',
'Laugheiður', 'Lára', 'Lárensína', 'Láretta', 'Lárey', 'Lea', 'Leikný',
'Leila', 'Lena', 'Leonóra', 'Leóna', 'Leónóra', 'Lilja', 'Liljá',
'Liljurós', 'Lill', 'Lilla', 'Lillian', 'Lillý', 'Lily', 'Lilý', 'Lind',
'Linda', 'Linddís', 'Lingný', 'Lisbeth', 'Listalín', 'Liv', 'Líba',
'Líf', 'Lífdís', 'Lín', 'Lína', 'Línbjörg', 'Líndís', 'Líneik', 'Líney',
'Línhildur', 'Lísa', 'Lísabet', 'Lísandra', 'Lísbet', 'Lísebet', 'Lív',
'Ljósbjörg', 'Ljósbrá', 'Ljótunn', 'Lofn', 'Loftveig', 'Logey',
'Lokbrá', 'Lotta', 'Louisa', 'Lousie', 'Lovísa', 'Lóa', 'Lóreley',
'Lukka', 'Lúcía', 'Lúðvíka', 'Lúísa', 'Lúna', 'Lúsinda', 'Lúsía',
'Lúvísa', 'Lydia', 'Lydía', 'Lyngheiður', 'Lýdía', 'Læla', 'Maddý',
'Magda', 'Magdalena', 'Magðalena', 'Magga', 'Maggey', 'Maggý', 'Magna',
'Magndís', 'Magnea', 'Magnes', 'Magney', 'Magnfríður', 'Magnheiður',
'Magnhildur', 'Magnúsína', 'Magný', 'Magnþóra', 'Maía', 'Maídís',
'Maísól', 'Maj', 'Maja', 'Malen', 'Malena', 'Malía', 'Malín', 'Malla',
'Manda', 'Manúela', 'Mara', 'Mardís', 'Marela', 'Marella', 'Maren',
'Marey', 'Marfríður', 'Margit', 'Margot', 'Margret', 'Margrét',
'Margrjet', 'Margunnur', 'Marheiður', 'Maria', 'Marie', 'Marikó',
'Marinella', 'Marit', 'Marí', 'María', 'Maríam', 'Marían', 'Maríana',
'Maríanna', 'Marín', 'Marína', 'Marínella', 'Maríon', 'Marísa',
'Marísól', 'Marít', 'Maríuerla', 'Marja', 'Markrún', 'Marlaug',
'Marlena', 'Marlín', 'Marlís', 'Marólína', 'Marsa', 'Marselía',
'Marselína', 'Marsibil', 'Marsilía', 'Marsý', 'Marta', 'Martha',
'Martína', 'Mary', 'Marý', 'Matta', 'Mattea', 'Matthea', 'Matthilda',
'Matthildur', 'Matthía', 'Mattíana', 'Mattína', 'Mattý', 'Maxima',
'Mábil', 'Málfríður', 'Málhildur', 'Málmfríður', 'Mánadís', 'Máney',
'Mára', 'Meda', 'Mekkin', 'Mekkín', 'Melinda', 'Melissa', 'Melkorka',
'Melrós', 'Messíana', 'Metta', 'Mey', 'Mikaela', 'Mikaelína',
'Mikkalína', 'Milda', 'Mildríður', 'Milla', 'Millý', 'Minerva', 'Minna',
'Minney', 'Minný', 'Miriam', 'Mirja', 'Mirjam', 'Mirra', 'Mist', 'Mía',
'Mínerva', 'Míra', 'Míranda', 'Mítra', 'Mjaðveig', 'Mjalldís',
'Mjallhvít', 'Mjöll', 'Mona', 'Monika', 'Módís', 'Móeiður', 'Móey',
'Móheiður', 'Móna', 'Mónika', 'Móníka', 'Munda', 'Mundheiður',
'Mundhildur', 'Mundína', 'Myrra', 'Mýr', 'Mýra', 'Mýrún', 'Mörk',
'Nadia', 'Nadía', 'Nadja', 'Nana', 'Nanna', 'Nanný', 'Nansý', 'Naomí',
'Naómí', 'Natalie', 'Natalía', 'Náttsól', 'Nella', 'Nellý', 'Nenna',
'Nicole', 'Niðbjörg', 'Nikíta', 'Nikoletta', 'Nikólína', 'Ninja',
'Ninna', 'Nína', 'Níní', 'Njála', 'Njóla', 'Norma', 'Nóa', 'Nóra',
'Nótt', 'Nýbjörg', 'Odda', 'Oddbjörg', 'Oddfreyja', 'Oddfríður',
'Oddgerður', 'Oddhildur', 'Oddlaug', 'Oddleif', 'Oddný', 'Oddrún',
'Oddveig', 'Oddvör', 'Oktavía', 'Októvía', 'Olga', 'Ollý', 'Ora',
'Orka', 'Ormheiður', 'Ormhildur', 'Otkatla', 'Otta', 'Óda', 'Ófelía',
'Óla', 'Ólafía', 'Ólafína', 'Ólavía', 'Ólivía', 'Ólína', 'Ólöf', 'Ósa',
'Ósk', 'Ótta', 'Pamela', 'París', 'Patricia', 'Patrisía', 'Pála',
'Páldís', 'Páley', 'Pálfríður', 'Pálhanna', 'Pálheiður', 'Pálhildur',
'Pálín', 'Pálína', 'Pálmey', 'Pálmfríður', 'Pálrún', 'Perla', 'Peta',
'Petra', 'Petrea', 'Petrína', 'Petronella', 'Petrónella', 'Petrós',
'Petrún', 'Petrúnella', 'Pétrína', 'Pétrún', 'Pía', 'Polly', 'Pollý',
'Pría', 'Rafney', 'Rafnhildur', 'Ragna', 'Ragnbjörg', 'Ragney',
'Ragnfríður', 'Ragnheiður', 'Ragnhildur', 'Rakel', 'Ramóna', 'Randalín',
'Randíður', 'Randý', 'Ranka', 'Rannva', 'Rannveig', 'Ráðhildur', 'Rán',
'Rebekka', 'Reginbjörg', 'Regína', 'Rein', 'Renata', 'Reyn', 'Reyndís',
'Reynheiður', 'Reynhildur', 'Rikka', 'Ripley', 'Rita', 'Ríkey', 'Rín',
'Ríta', 'Ronja', 'Rorí', 'Roxanna', 'Róberta', 'Róbjörg', 'Rós', 'Rósa',
'Rósalind', 'Rósanna', 'Rósbjörg', 'Rósborg', 'Róselía', 'Rósey',
'Rósfríður', 'Róshildur', 'Rósinkara', 'Rósinkransa', 'Róska',
'Róslaug', 'Róslind', 'Róslinda', 'Róslín', 'Rósmary', 'Rósmarý',
'Rósmunda', 'Rósný', 'Runný', 'Rut', 'Ruth', 'Rúbý', 'Rún', 'Rúna',
'Rúndís', 'Rúnhildur', 'Rúrí', 'Röfn', 'Rögn', 'Röskva', 'Sabína',
'Sabrína', 'Saga', 'Salbjörg', 'Saldís', 'Salgerður', 'Salín', 'Salína',
'Salka', 'Salma', 'Salný', 'Salome', 'Salóme', 'Salvör', 'Sandra',
'Sanna', 'Santía', 'Sara', 'Sarína', 'Sefanía', 'Selja', 'Selka',
'Selma', 'Senía', 'Septíma', 'Sera', 'Serena', 'Seselía', 'Sesilía',
'Sesselía', 'Sesselja', 'Sessilía', 'Sif', 'Sigdís', 'Sigdóra',
'Sigfríð', 'Sigfríður', 'Sigga', 'Siggerður', 'Sigmunda', 'Signa',
'Signhildur', 'Signý', 'Sigríður', 'Sigrún', 'Sigurást', 'Sigurásta',
'Sigurbára', 'Sigurbirna', 'Sigurbjörg', 'Sigurbjört', 'Sigurborg',
'Sigurdís', 'Sigurdóra', 'Sigurdríf', 'Sigurdrífa', 'Sigurða',
'Sigurey', 'Sigurfinna', 'Sigurfljóð', 'Sigurgeira', 'Sigurhanna',
'Sigurhelga', 'Sigurhildur', 'Sigurjóna', 'Sigurlaug', 'Sigurleif',
'Sigurlilja', 'Sigurlinn', 'Sigurlín', 'Sigurlína', 'Sigurmunda',
'Sigurnanna', 'Sigurósk', 'Sigurrós', 'Sigursteina', 'Sigurunn',
'Sigurveig', 'Sigurvina', 'Sigurþóra', 'Sigyn', 'Sigþóra', 'Sigþrúður',
'Silfa', 'Silfá', 'Silfrún', 'Silja', 'Silka', 'Silla', 'Silva',
'Silvana', 'Silvía', 'Sirra', 'Sirrý', 'Siv', 'Sía', 'Símonía', 'Sísí',
'Síta', 'Sjöfn', 'Skarpheiður', 'Skugga', 'Skuld', 'Skúla', 'Skúlína',
'Snjáfríður', 'Snjáka', 'Snjófríður', 'Snjólaug', 'Snorra', 'Snót',
'Snæbjörg', 'Snæbjört', 'Snæborg', 'Snæbrá', 'Snædís', 'Snæfríður',
'Snælaug', 'Snærós', 'Snærún', 'Soffía', 'Sofie', 'Sofía', 'Solveig',
'Sonja', 'Sonný', 'Sophia', 'Sophie', 'Sól', 'Sóla', 'Sólbjörg',
'Sólbjört', 'Sólborg', 'Sólbrá', 'Sólbrún', 'Sóldís', 'Sóldögg',
'Sóley', 'Sólfríður', 'Sólgerður', 'Sólhildur', 'Sólín', 'Sólkatla',
'Sóllilja', 'Sólný', 'Sólrós', 'Sólrún', 'Sólveig', 'Sólvör', 'Sónata',
'Stefana', 'Stefanía', 'Stefánný', 'Steina', 'Steinbjörg', 'Steinborg',
'Steindís', 'Steindóra', 'Steiney', 'Steinfríður', 'Steingerður',
'Steinhildur', 'Steinlaug', 'Steinrós', 'Steinrún', 'Steinunn',
'Steinvör', 'Steinþóra', 'Stella', 'Stígheiður', 'Stígrún', 'Stína',
'Stjarna', 'Styrgerður', 'Sumarlína', 'Sumarrós', 'Sunna', 'Sunnefa',
'Sunneva', 'Sunniva', 'Sunníva', 'Susan', 'Súla', 'Súsan', 'Súsanna',
'Svafa', 'Svala', 'Svalrún', 'Svana', 'Svanbjörg', 'Svanbjört',
'Svanborg', 'Svandís', 'Svaney', 'Svanfríður', 'Svanheiður',
'Svanhildur', 'Svanhvít', 'Svanlaug', 'Svanrós', 'Svanþrúður', 'Svava',
'Svea', 'Sveina', 'Sveinbjörg', 'Sveinborg', 'Sveindís', 'Sveiney',
'Sveinfríður', 'Sveingerður', 'Sveinhildur', 'Sveinlaug', 'Sveinrós',
'Sveinrún', 'Sveinsína', 'Sveinveig', 'Sylgja', 'Sylva', 'Sylvía',
'Sæbjörg', 'Sæbjört', 'Sæborg', 'Sædís', 'Sæfinna', 'Sæfríður',
'Sæhildur', 'Sælaug', 'Sæmunda', 'Sæný', 'Særós', 'Særún', 'Sæsól',
'Sæunn', 'Sævör', 'Sölva', 'Sölvey', 'Sölvína', 'Tala', 'Talía',
'Tamar', 'Tamara', 'Tanía', 'Tanja', 'Tanya', 'Tanya', 'Tara', 'Tea',
'Teitný', 'Tekla', 'Telma', 'Tera', 'Teresa', 'Teresía', 'Thea',
'Thelma', 'Theodóra', 'Theódóra', 'Theresa', 'Tindra', 'Tinna', 'Tirsa',
'Tía', 'Tíbrá', 'Tína', 'Todda', 'Torbjörg', 'Torfey', 'Torfheiður',
'Torfhildur', 'Tóbý', 'Tóka', 'Tóta', 'Tristana', 'Trú', 'Tryggva',
'Tryggvína', 'Týra', 'Ugla', 'Una', 'Undína', 'Unna', 'Unnbjörg',
'Unndís', 'Unnur', 'Urður', 'Úa', 'Úlfa', 'Úlfdís', 'Úlfey',
'Úlfheiður', 'Úlfhildur', 'Úlfrún', 'Úlla', 'Úna', 'Úndína', 'Úranía',
'Úrsúla', 'Vagna', 'Vagnbjörg', 'Vagnfríður', 'Vaka', 'Vala',
'Valbjörg', 'Valbjörk', 'Valbjört', 'Valborg', 'Valdheiður', 'Valdís',
'Valentína', 'Valería', 'Valey', 'Valfríður', 'Valgerða', 'Valgerður',
'Valhildur', 'Valka', 'Vallý', 'Valný', 'Valrós', 'Valrún', 'Valva',
'Valý', 'Valþrúður', 'Vanda', 'Vár', 'Veig', 'Veiga', 'Venus', 'Vera',
'Veronika', 'Verónika', 'Veróníka', 'Vetrarrós', 'Vébjörg', 'Védís',
'Végerður', 'Vélaug', 'Véný', 'Vibeka', 'Victoría', 'Viðja', 'Vigdís',
'Vigný', 'Viktoria', 'Viktoría', 'Vilborg', 'Vildís', 'Vilfríður',
'Vilgerður', 'Vilhelmína', 'Villa', 'Villimey', 'Vilma', 'Vilný',
'Vinbjörg', 'Vinný', 'Vinsý', 'Virginía', 'Víbekka', 'Víf', 'Vígdögg',
'Víggunnur', 'Víóla', 'Víóletta', 'Vísa', 'Von', 'Von', 'Voney',
'Vordís', 'Ylfa', 'Ylfur', 'Ylja', 'Ylva', 'Ynja', 'Yrja', 'Yrsa',
'Ýja', 'Ýma', 'Ýr', 'Ýrr', 'Þalía', 'Þeba', 'Þeódís', 'Þeódóra',
'Þjóðbjörg', 'Þjóðhildur', 'Þoka', 'Þorbjörg', 'Þorfinna', 'Þorgerður',
'Þorgríma', 'Þorkatla', 'Þorlaug', 'Þorleif', 'Þorsteina', 'Þorstína',
'Þóra', 'Þóranna', 'Þórarna', 'Þórbjörg', 'Þórdís', 'Þórða', 'Þórelfa',
'Þórelfur', 'Þórey', 'Þórfríður', 'Þórgunna', 'Þórgunnur', 'Þórhalla',
'Þórhanna', 'Þórheiður', 'Þórhildur', 'Þórkatla', 'Þórlaug', 'Þórleif',
'Þórný', 'Þórodda', 'Þórsteina', 'Þórsteinunn', 'Þórstína', 'Þórunn',
'Þórveig', 'Þórvör', 'Þrá', 'Þrúða', 'Þrúður', 'Þula', 'Þura', 'Þurí',
'Þuríður', 'Þurý', 'Þúfa', 'Þyri', 'Þyrí', 'Þöll', 'Ægileif', 'Æsa',
'Æsgerður', 'Ögmunda', 'Ögn', 'Ölrún', 'Ölveig', 'Örbrún', 'Örk', 'Ösp'];

Jivanmukta

unread,
Dec 20, 2023, 9:21:49 AM12/20/23
to

Mimnimal example for Windows I prepered:

0. Prepare folders:
test_regex
test_regex\src
test_regex\build\apps
test_regex\build\objects\src

1. File test_regex\Makefile:

CXX := gcc # -c++

ObjSuf = obj
SrcSuf = cpp
ExeSuf = exe
DllSuf = dll
BUILD := ./build
BUILD_WIN := .\build
OBJ_DIR := $(BUILD)/objects
OBJ_DIR_WIN := $(BUILD_WIN)\objects
APP_DIR := $(BUILD)/apps
APP_DIR_WIN := $(BUILD_WIN)\apps
INCLUDE := -Iinclude
CXXFLAGS := -Wall -Wextra -no-pie -DWIN32 -D_WIN32 -D_WINDOWS -D_X86_=1
-D_DLL -Werror=deprecated-declarations
LDFLAGS := -lstdc++ -lm -mconsole
TARGET := test.$(ExeSuf)

all: build $(APP_DIR)/$(TARGET)

SRC := $(wildcard src/*.$(SrcSuf))
OBJECTS := $(SRC:%.$(SrcSuf)=$(OBJ_DIR)/%.$(ObjSuf))

$(OBJ_DIR)/%.$(ObjSuf): %.$(SrcSuf)
$(CXX) $(CXXFLAGS) $(INCLUDE) -c $< -o $@ $(LDFLAGS)

$(APP_DIR)/$(TARGET): $(OBJECTS)
$(CXX) $(CXXFLAGS) -o $(APP_DIR)/$(TARGET) $^ $(LDFLAGS)

.PHONY: all build clean debug release

debug: CXXFLAGS += -DDEBUG -g -O0 -D_GLIBCXX_DEBUG # -fsanitize=address
debug: all

test: CXXFLAGS += -pg
test: all

release: CXXFLAGS += -O2
release: all # production

clean:
@del /F/S/Q $(OBJ_DIR_WIN)\*
@del /F/S/Q $(APP_DIR_WIN)\*

2. File test_regex\src\test.cpp:
#include <iostream>
#include <string>
#include <regex>

int main() {
using namespace std;
string regexp1 =
"(static|private|protected|public)?\\s*(readonly)?\\s*([_a-zA-Z0-9]+)?\\s*(\\$([a-zA-Z_][a-zA-Z0-9_]*)\\s*=.*,?\\s*)+";
regex re1(regexp1, regex_constants::icase);
smatch matches;
string line = "protected static $firstNameFemale = ['Aagot',
'Æsgerður', 'Ögmunda', 'Ögn', 'Ölrún', 'Ölveig', 'Örbrún', 'Örk', 'Ösp'];";
cout << "before regex_search; line len: " << line.length() <<
", regexp1 len: " << regexp1.length() << ", regexp1: " << regexp1;
if (line != "" && regex_search(line, matches, re1) &&
matches.ready()) {
cout << "after regex_search"; // NOT ACHIEVED
}
cout << "after if with regex_search"; // NOT ACHIEVED
return EXIT_SUCCESS;

Andreas Kempe

unread,
Dec 20, 2023, 5:01:30 PM12/20/23
to
Den 2023-12-20 skrev Jivanmukta <jivan...@poczta.onet.pl>:
>
> Mimnimal example for Windows I prepered:
>
> [code elided]
>

I unfortunately don't have a Windows machine to test on, but your
example compiles on FreeBSD using clang++ and the program runs with
the following output (I added a few newlines to the prints):
>before regex_search; line len: 22109, regexp1 len: 110, regexp1: (static|private|protected|public)?\s*(readonly)?\s*([_a-zA-Z0-9]+)?\s*(\$([a-zA-Z_][a-zA-Z0-9_]*)\s*=.*,?\s*)+
>after regex_search
>after if with regex_search

It does not crash.

Jivanmukta

unread,
Dec 21, 2023, 1:57:32 AM12/21/23
to
W dniu 20.12.2023 o 23:01, Andreas Kempe pisze:
I failed to use CLang++ in Windows. I don't have iostream file in
LLVM\include folder and the program does not compile.

Jivanmukta

unread,
Dec 21, 2023, 3:27:04 AM12/21/23
to
On 21.12.2023 07:57, Jivanmukta wrote:
> W dniu 20.12.2023 o 23:01, Andreas Kempe pisze:
>> Den 2023-12-20 skrev Jivanmukta <jivan...@poczta.onet.pl>:
>>>
>>> Mimnimal example for Windows I prepered:
>>>
>>> [code elided]
>>>
>>
>> I unfortunately don't have a Windows machine to test on, but your
>> example compiles on FreeBSD using clang++ and the program runs with
>> the following output (I added a few newlines to the prints):
>>> before regex_search; line len: 22109, regexp1 len: 110, regexp1:
>>> (static|private|protected|public)?\s*(readonly)?\s*([_a-zA-Z0-9]+)?\s*(\$([a-zA-Z_][a-zA-Z0-9_]*)\s*=.*,?\s*)+
>>> after regex_search
>>> after if with regex_search
>>
>> It does not crash.
>
> I failed to use CLang++ in Windows. I don't have iostream file in
> LLVM\include folder and the program does not compile.
>

i.e. I have:

clang++ -std=c++11 -Wall -Wextra -DWIN32 -D_WIN32 -D_WINDOWS -D_X86_=1
-D_DLL -Werror=deprecated-declarations -Iinclude -c src/test.cpp -o
build/objects/src/test.obj
src/test.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
^
1 error generated.
make: *** [build/objects/src/test.obj] Błąd 1

Andreas Kempe

unread,
Dec 21, 2023, 4:29:38 AM12/21/23
to
I haven't used clang on Windows so I'm afraid I can't really help you,
I tried it using gcc12 on FreeBSD as well and got the same result,
i.e. no crash.

jak

unread,
Dec 25, 2023, 5:03:25 PM12/25/23
to
Jivanmukta ha scritto:
Hi,
On Linux your code runs fine and ends with this output:

before regex_search; line len: 22109, regexp1 len: 110, regexp1:
(static|private|protected|public)?\s*(readonly)?\s*([_a-zA-Z0-9]+)?\s*(\$([a-zA-Z_][a-zA-Z0-9_]*)\s*=.*,?\s*)+after
regex_searchafter if with regex_search==95920==

I checked it with Valgrind and it didn't even find any problems.

I also tried it on the Windows machine (10) with the Cygwin environment
and, unfortunately, I had the same problem as you:

$ ./test
Segmentation fault (core dumped)
$ gcc -v
gcc version 11.4.0 (GCC)

completed in the debug version and ran under GDB it gives the
following error message:

Thread 1 "test" received signal SIGSEGV, Segmentation fault.
0x00000003fee97f33 in cygstdc++-
6!_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE
() from /usr/bin/cygstdc++-6.dll

I hope this info are useful to you.

0 new messages