Subject: bug#52446: 28.0.90; Infinite loop in add_row_entry

From: Eli Zaretskii <[email-masked]>
Date: Sun, 12 Dec 2021 12:10:57 +0200

> From: Po Lu <[email-masked]>
> Cc: [email-masked]
> Date: Sun, 12 Dec 2021 17:51:05 +0800
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> > At which point in the code did you print those?
> 
> Inside the infinite loop.

And if you go over the row_table[] array, how many such entries doi
you see there?  And what is the value of row_table_size?

> RIGHT: 54 glyphs
>   0    0: CHAR[0x0] pos=-734003200 blev=0,btyp=UNDEF w=0 a+d=9216+-18611
>   1    0: CHAR[0xec000000] pos=0 blev=0,btyp=UNDEF w=0 a+d=-7424+909 face=119 vof=1
>   2    0: CHAR[0x2500007f] pos=452984959 blev=0,btyp=UNDEF w=0 a+d=0+0
>   3    0: CHAR[0x0] pos=-318766977 blev=0,btyp=UNDEF w=0 a+d=8704+0 face=1
>   4    0:  pos=-1392508928 w=127 a+d=1280+-16534 face=828327 vof=-20 MB OVL [ ]
>   5  127: CHAR[0x0] pos=805306368 blev=0,btyp=UNDEF w=0 a+d=0+0
>   6  127: CHAR[0x30000000] pos=805306368 blev=0,btyp=UNDEF w=0 a+d=0+0
>   7  127: CHAR[0x0] pos=0 blev=0,btyp=UNDEF w=0 a+d=12288+0
>   8  127: CHAR[0x0] pos=0 blev=0,btyp=UNDEF w=0 a+d=0+0
>   9  127: CHAR[0x0] pos=33554432 blev=0,btyp=UNDEF w=0 a+d=512+0
>  10  127: CHAR[0x0] pos=0 blev=0,btyp=UNDEF w=0 a+d=12288+0
>  11  127: CHAR[0x30000000] pos=2063597568 blev=0,btyp=UNDEF w=127 a+d=0+0
>  12  254: CHAR[0x1000000] pos=0 blev=0,btyp=UNDEF w=0 a+d=-4096+743 vof=1
>  13  254: CHAR[0x1000000] pos=16777216 blev=0,btyp=UNDEF w=0 a+d=256+0
>  14  254: CHAR[0x0] pos=16777216 blev=0,btyp=UNDEF w=0 a+d=0+0
>  15  254: CHAR[0x1000000] pos=0 blev=0,btyp=UNDEF w=0 a+d=-26624+11687 vof=1
>  16  254: CHAR[0x0] pos=16777216 blev=0,btyp=UNDEF w=0 a+d=256+0
>  17  254: CHAR[0x0] pos=0 blev=0,btyp=UNDEF w=0 a+d=0+0
>  18  254:  pos=0 w=-1 a+d=-1+-1 vof=-1 MB PAD N/A OVL AVOID [ ]
>  19  253: CHAR[0x0] pos=16777216 blev=0,btyp=UNDEF w=0 a+d=0+0
>  20  253: CHAR[0x74000000] pos=0 blev=0,btyp=UNDEF w=0 a+d=0+0 face=655360
>  21  253: CHAR[0x80000000] pos=-1929379713 blev=0,btyp=UNDEF w=0 a+d=0+16 face=91794 vof=1
>  22  253:  pos=0 w=0 a+d=-16384+-5898 face=655360 vof=-21 MB OVL [ ]
>  23  253: CHAR[0xf000007f] pos=1560281088 blev=0,btyp=UNDEF w=0 a+d=-19712+-19263
>  24  253:  pos=33554432 w=0 a+d=-16384+-6069 face=655360 vof=-21 MB OVL [ ]
>  25  253: CHAR[0x90000000] pos=-1258291200 blev=0,btyp=UNDEF w=0 a+d=8960+-19263
>  26  253: CHAR[0xa400000] pos=-1543503872 blev=0,btyp=UNDEF w=0 a+d=-16384+-17738 face=47798
>  27  253: CHAR[0xa0000000] pos=-1006632960 blev=0,btyp=UNDEF w=0 a+d=9728+0 face=46272
>  28  253: CHAR[0x5000000] pos=-1879048192 blev=0,btyp=UNDEF w=0 a+d=16384+-17736 face=47735
>  29  253: CHAR[0x5000000] pos=171966464 blev=0,btyp=UNDEF w=0 a+d=32000+11690 vof=1
>  30  253: CHAR[0x6000000] pos=171966464 blev=0,btyp=UNDEF w=0 a+d=9472+26277 vof=1
>  31  253: CHAR[0xc0000000] pos=-268435456 blev=0,btyp=UNDEF w=127 a+d=0+0
>  32  380: CHAR[0xd0000000] pos=33554559 blev=0,btyp=UNDEF w=0 a+d=12288+0
>  33  380: CHAR[0xd0000000] pos=-805306368 blev=0,btyp=UNDEF w=0 a+d=-12288+245 face=245
>  34  380: CHAR[0xd0000000] pos=-805306368 blev=0,btyp=UNDEF w=0 a+d=-12288+245 face=245
>  35  380:  pos=-805306368 w=0 a+d=15104+-25445 face=245 vof=-20 MB OVL [ ]
>  36  380: CHAR[0x0] pos=805306368 blev=0,btyp=UNDEF w=0 a+d=8448+0 face=724146
>  37  380: CHAR[0x18000000] pos=553648128 blev=0,btyp=UNDEF w=-7102 a+d=22749+0
>  38 -6722: CHAR[0x6f00006d] pos=0 blev=0,btyp=UNDEF w=0 a+d=8448+0 face=221549
>  39 -6722: CHAR[0x2f000000] pos=553648243 blev=0,btyp=UNDEF w=25645 a+d=31073+0
>  40 18923:  pos=1918986355 w=29801 a+d=97+28528 face=156265 vof=27693 N/A OVL AVOID [ ]
>  41 48724: IMAGE[1] slice=8706,50290,47091,5475 pos=358856691 w=1 a+d=0+8706 face=1 vof=-15246 PAD N/A OVL AVOID [ ]
>  42 48725: IMAGE[0] slice=0,24832,0,0 pos=358856691 w=1 a+d=0+8706 face=1 vof=-15246 PAD N/A OVL AVOID [ ]
>  43 48726:  pos=-1811939201 w=0 a+d=0+25024 face=78033 vof=-36 MB OVL [ ]
>  44 48726: CHAR[0xc0000000] pos=127 blev=0,btyp=UNDEF w=0 a+d=0+0
>  45 48726: CHAR[0x0] pos=1073741824 blev=0,btyp=UNDEF w=0 a+d=0+11868 face=77407 vof=1
>  46 48726: CHAR[0xfd000000] pos=-251658240 blev=0,btyp=UNDEF w=0 a+d=0+0 face=58281
>  47 48726: CHAR[0x0] pos=0 blev=0,btyp=UNDEF w=0 a+d=0+0
>  48 48726: CHAR[0x0] pos=16777216 blev=0,btyp=UNDEF w=0 a+d=0+0
>  49 48726: CHAR[0x0] pos=0 blev=0,btyp=UNDEF w=0 a+d=0+0
>  50 48726: CHAR[0x0] pos=0 blev=0,btyp=UNDEF w=0 a+d=0+0
>  51 48726: CHAR[0x21000000] pos=553648128 blev=0,btyp=UNDEF w=0 a+d=0+0 face=50249
>  52 48726: CHAR[0x40000000] pos=1023422208 blev=0,btyp=UNDEF w=0 a+d=16640+0 face=42283
>  53 48726: CHAR[0x1000000] pos=1073741824 blev=0,btyp=UNDEF w=0 a+d=0+0 face=69034 vof=1536
> 
> Does this make sense?  I think it's starting to smell like a memory
> problem of sorts.

This glyph row is clearly garbage.  So yes, the question is how did
that got into the table.