Notes |
|
|
layout assert while calculating descendant bounding boxes
$ ./nsgtk -V rlog https://www.piano-tuners.org/history/piano-tuner-history.html
nsgtk: render/layout.c:5131: layout_calculate_descendant_bboxes: Assertion `(box->width != 2147483647) && (box->height != (-2147483647 - 1))' failed.
adding some debug it seems that box->width is UNKNOWN_WIDTH (height is 0)
Its a recursive call in from the "non float" child loop in layout_calculate_descendant_bboxes (lines circa layout.c:5188 ) but its deep in the box stack
|
|
|
|
gdb from the failing box, up
(gdb) p box
$2 = (struct box *) 0x106c570
(gdb) p *box
$1 = {type = BOX_BLOCK, flags = 0, styles = 0x0, style = 0x106c210, x = 0, y = 0, width = 2147483647,
height = 0, descendant_x0 = 0, descendant_y0 = 0, descendant_x1 = 0, descendant_y1 = 0, margin = {0,
0, 0, 0}, padding = {0, 0, 0, 0}, border = {{style = CSS_BORDER_STYLE_INHERIT, c = 0, width = 0}, {
style = CSS_BORDER_STYLE_INHERIT, c = 0, width = 0}, {style = CSS_BORDER_STYLE_INHERIT, c = 0,
width = 0}, {style = CSS_BORDER_STYLE_INHERIT, c = 0, width = 0}}, scroll_x = 0x0, scroll_y = 0x0,
min_width = 0, max_width = 2147483647, byte_offset = 0, text = 0x0, length = 0, space = 0, href = 0x0,
target = 0x0, title = 0x0, columns = 1, rows = 1, start_column = 0, next = 0x0, prev = 0x0,
children = 0x0, last = 0x0, parent = 0x106c360, inline_end = 0x0, float_children = 0x0,
next_float = 0x0, float_container = 0x0, clear_level = 0, list_marker = 0x0, col = 0x0, gadget = 0x0,
usemap = 0x0, id = 0x0, background = 0x0, object = 0x0, object_params = 0x0, iframe = 0x0, node = 0x0}
(gdb) p *box->parent
$3 = {type = BOX_BLOCK, flags = 2112, styles = 0x10981f0, style = 0x106c110, x = 20, y = 0, width = 119,
height = 59, descendant_x0 = 0, descendant_y0 = 0, descendant_x1 = 119, descendant_y1 = 59, margin = {
0, 20, 0, 20}, padding = {0, 0, 0, 0}, border = {{style = CSS_BORDER_STYLE_NONE, c = 4287137928,
width = 0}, {style = CSS_BORDER_STYLE_NONE, c = 4287137928, width = 0}, {
style = CSS_BORDER_STYLE_NONE, c = 4287137928, width = 0}, {style = CSS_BORDER_STYLE_NONE,
c = 4287137928, width = 0}}, scroll_x = 0x0, scroll_y = 0x0, min_width = 96, max_width = 96,
byte_offset = 0, text = 0x10963b0 "abpt logo.gif - 2099 Bytes", length = 26, space = 0, href = 0x0,
target = 0x0, title = 0x0, columns = 1, rows = 1, start_column = 0, next = 0x0, prev = 0x0,
children = 0x106c570, last = 0x106c570, parent = 0x106bda0, inline_end = 0x0, float_children = 0x0,
next_float = 0x0, float_container = 0x0, clear_level = 0, list_marker = 0x0, col = 0x0, gadget = 0x0,
usemap = 0x0, id = 0x0, background = 0x0, object = 0x10c2be0, object_params = 0x0, iframe = 0x0,
node = 0x112c960}
(gdb) p *box->parent->parent
$4 = {type = BOX_BLOCK, flags = 2112, styles = 0xe74390, style = 0x106bc50, x = 0, y = 0, width = 159,
height = 59, descendant_x0 = 0, descendant_y0 = -9, descendant_x1 = 159, descendant_y1 = 59, margin = {
0, 0, 0, 0}, padding = {0, 0, 0, 0}, border = {{style = CSS_BORDER_STYLE_NONE, c = 4278190080,
width = 0}, {style = CSS_BORDER_STYLE_NONE, c = 4278190080, width = 0}, {
style = CSS_BORDER_STYLE_NONE, c = 4278190080, width = 0}, {style = CSS_BORDER_STYLE_NONE,
c = 4278190080, width = 0}}, scroll_x = 0x0, scroll_y = 0x0, min_width = 96, max_width = 96,
byte_offset = 0, text = 0x0, length = 0, space = 0, href = 0x0, target = 0x0, title = 0x0,
columns = 1, rows = 1, start_column = 0, next = 0x106c8b0, prev = 0x0, children = 0x106c360,
last = 0x106c360, parent = 0x106bac0, inline_end = 0x0, float_children = 0x0, next_float = 0x0,
float_container = 0x0, clear_level = 0, list_marker = 0x106bf80, col = 0x0, gadget = 0x0,
usemap = 0x0, id = 0x0, background = 0x0, object = 0x0, object_params = 0x0, iframe = 0x0,
node = 0x112c810}
(gdb) p *box->parent->parent->parent
$5 = {type = BOX_BLOCK, flags = 2112, styles = 0x1036a00, style = 0x106b970, x = 0, y = 0, width = 159,
height = 1905, descendant_x0 = 0, descendant_y0 = -9, descendant_x1 = 159, descendant_y1 = 1905,
margin = {0, 0, 0, 0}, padding = {0, 0, 0, 0}, border = {{style = CSS_BORDER_STYLE_NONE,
c = 4278190080, width = 0}, {style = CSS_BORDER_STYLE_NONE, c = 4278190080, width = 0}, {
style = CSS_BORDER_STYLE_NONE, c = 4278190080, width = 0}, {style = CSS_BORDER_STYLE_NONE,
c = 4278190080, width = 0}}, scroll_x = 0x0, scroll_y = 0x0, min_width = 96, max_width = 348,
byte_offset = 0, text = 0x0, length = 0, space = 0, href = 0x0, target = 0x0, title = 0x0,
columns = 1, rows = 1, start_column = 0, next = 0x13d4740, prev = 0x0, children = 0x106bda0,
last = 0x13d3a00, parent = 0x106b7e0, inline_end = 0x0, float_children = 0x0, next_float = 0x0,
float_container = 0x0, clear_level = 0, list_marker = 0x0, col = 0x0, gadget = 0x0, usemap = 0x0,
id = 0x0, background = 0x0, object = 0x0, object_params = 0x0, iframe = 0x0, node = 0x112c5e0}
(gdb) p *box->parent->parent->parent->parent
$6 = {type = BOX_BLOCK, flags = 2112, styles = 0xe95eb0, style = 0x106b690, x = 0, y = 0, width = 159,
height = 1948, descendant_x0 = 0, descendant_y0 = -9, descendant_x1 = 159, descendant_y1 = 1948,
margin = {0, 0, 0, 0}, padding = {0, 0, 0, 0}, border = {{style = CSS_BORDER_STYLE_NONE,
c = 4278190080, width = 0}, {style = CSS_BORDER_STYLE_NONE, c = 4278190080, width = 0}, {
style = CSS_BORDER_STYLE_NONE, c = 4278190080, width = 0}, {style = CSS_BORDER_STYLE_NONE,
c = 4278190080, width = 0}}, scroll_x = 0x0, scroll_y = 0x0, min_width = 96, max_width = 348,
byte_offset = 0, text = 0x0, length = 0, space = 0, href = 0x0, target = 0x0, title = 0x0,
columns = 1, rows = 1, start_column = 0, next = 0x0, prev = 0x0, children = 0x106bac0,
last = 0x13d4c00, parent = 0x106b140, inline_end = 0x0, float_children = 0x0, next_float = 0x0,
float_container = 0x0, clear_level = 0, list_marker = 0x0, col = 0x0, gadget = 0x0, usemap = 0x0,
id = 0x0, background = 0x0, object = 0x0, object_params = 0x0, iframe = 0x0, node = 0x112c090}
(gdb) p *box->parent->parent->parent->parent->parent
$7 = {type = BOX_BLOCK, flags = 2112, styles = 0xff36a0, style = 0x106aff0, x = 0, y = 0, width = 159,
height = 1948, descendant_x0 = 0, descendant_y0 = -9, descendant_x1 = 159, descendant_y1 = 1948,
margin = {0, 0, 0, 0}, padding = {0, 0, 0, 0}, border = {{style = CSS_BORDER_STYLE_NONE,
c = 4278190080, width = 0}, {style = CSS_BORDER_STYLE_NONE, c = 4278190080, width = 0}, {
style = CSS_BORDER_STYLE_NONE, c = 4278190080, width = 0}, {style = CSS_BORDER_STYLE_NONE,
c = 4278190080, width = 0}}, scroll_x = 0x0, scroll_y = 0x0, min_width = 96, max_width = 348,
byte_offset = 0, text = 0x0, length = 0, space = 0, href = 0x0, target = 0x0, title = 0x0,
columns = 1, rows = 1, start_column = 0, next = 0x0, prev = 0x0, children = 0x106b7e0,
last = 0x106b7e0, parent = 0x106b500, inline_end = 0x0, float_children = 0x0, next_float = 0x0,
float_container = 0x1064be0, clear_level = 0, list_marker = 0x0, col = 0x0, gadget = 0x0,
usemap = 0x0, id = 0x0, background = 0x0, object = 0x0, object_params = 0x0, iframe = 0x0,
node = 0x112bb40} |
|
|
|
(gdb) p *box->parent->parent->parent->parent->parent->parent
$8 = {type = BOX_FLOAT_LEFT, flags = NEW_LINE, styles = 0x0, style = 0x0, x = 10, y = 315, width = 159,
height = 1948, descendant_x0 = 0, descendant_y0 = 0, descendant_x1 = 159, descendant_y1 = 1948,
margin = {0, 0, 0, 0}, padding = {0, 0, 0, 0}, border = {{style = CSS_BORDER_STYLE_INHERIT, c = 0,
width = 0}, {style = CSS_BORDER_STYLE_INHERIT, c = 0, width = 0}, {
style = CSS_BORDER_STYLE_INHERIT, c = 0, width = 0}, {style = CSS_BORDER_STYLE_INHERIT, c = 0,
width = 0}}, scroll_x = 0x0, scroll_y = 0x0, min_width = 96, max_width = 348, byte_offset = 0,
text = 0x0, length = 0, space = 2147483647, href = 0x0, target = 0x0, title = 0x0, columns = 1,
rows = 1, start_column = 0, next = 0x13d63e0, prev = 0x0, children = 0x106b140, last = 0x106b140,
parent = 0x106b320, inline_end = 0x0, float_children = 0x0, next_float = 0x0,
float_container = 0x1064be0, clear_level = 0, list_marker = 0x0, col = 0x0, gadget = 0x0,
usemap = 0x0, id = 0x0, background = 0x0, object = 0x0, object_params = 0x0, iframe = 0x0, node = 0x0}
(gdb) p *box->parent->parent->parent->parent->parent->parent->parent
$9 = {type = BOX_INLINE_CONTAINER, flags = 0, styles = 0x0, style = 0x0, x = 0, y = 0, width = 963,
height = 0, descendant_x0 = 0, descendant_y0 = 0, descendant_x1 = 963, descendant_y1 = 0, margin = {0,
0, 0, 0}, padding = {0, 0, 0, 0}, border = {{style = CSS_BORDER_STYLE_INHERIT, c = 0, width = 0}, {
style = CSS_BORDER_STYLE_INHERIT, c = 0, width = 0}, {style = CSS_BORDER_STYLE_INHERIT, c = 0,
width = 0}, {style = CSS_BORDER_STYLE_INHERIT, c = 0, width = 0}}, scroll_x = 0x0, scroll_y = 0x0,
min_width = 96, max_width = 18688, byte_offset = 0, text = 0x0, length = 0, space = 0, href = 0x0,
target = 0x0, title = 0x0, columns = 1, rows = 1, start_column = 0, next = 0x16ba0a0, prev = 0x0,
children = 0x106b500, last = 0x13d63e0, parent = 0x106ae60, inline_end = 0x0, float_children = 0x0,
next_float = 0x0, float_container = 0x0, clear_level = 0, list_marker = 0x0, col = 0x0, gadget = 0x0,
usemap = 0x0, id = 0x0, background = 0x0, object = 0x0, object_params = 0x0, iframe = 0x0, node = 0x0}
(gdb) p *box->parent->parent->parent->parent->parent->parent->parent->parent
$10 = {type = BOX_BLOCK, flags = 2112, styles = 0x12a15d0, style = 0x106ac10, x = 10, y = 0,
width = 963, height = 61105, descendant_x0 = 0, descendant_y0 = -9, descendant_x1 = 1005,
descendant_y1 = 61105, margin = {0, 0, 0, 0}, padding = {0, 0, 0, 0}, border = {{
style = CSS_BORDER_STYLE_NONE, c = 4278190080, width = 0}, {style = CSS_BORDER_STYLE_NONE,
c = 4278190080, width = 0}, {style = CSS_BORDER_STYLE_NONE, c = 4278190080, width = 0}, {
style = CSS_BORDER_STYLE_NONE, c = 4278190080, width = 0}}, scroll_x = 0x0, scroll_y = 0x0,
min_width = 96, max_width = 18688, byte_offset = 0, text = 0x0, length = 0, space = 0, href = 0x0,
target = 0x0, title = 0x0, columns = 1, rows = 1, start_column = 0, next = 0x16bd830, prev = 0x0,
children = 0x106b320, last = 0x16bd650, parent = 0x106aa80, inline_end = 0x0, float_children = 0x0,
next_float = 0x0, float_container = 0x0, clear_level = 0, list_marker = 0x0, col = 0x0, gadget = 0x0,
usemap = 0x0, id = 0x12bf640, background = 0x0, object = 0x0, object_params = 0x0, iframe = 0x0,
node = 0x112b390}
(gdb) p *box->parent->parent->parent->parent->parent->parent->parent->parent->parent
$11 = {type = BOX_BLOCK, flags = 2112, styles = 0x10cb250, style = 0x106a830, x = 0, y = 310,
width = 963, height = 61105, descendant_x0 = 0, descendant_y0 = -9, descendant_x1 = 1015,
descendant_y1 = 61105, margin = {0, 0, 0, 0}, padding = {0, 10, 0, 10}, border = {{
style = CSS_BORDER_STYLE_NONE, c = 4278190080, width = 0}, {style = CSS_BORDER_STYLE_NONE,
c = 4278190080, width = 0}, {style = CSS_BORDER_STYLE_NONE, c = 4278190080, width = 0}, {
style = CSS_BORDER_STYLE_NONE, c = 4278190080, width = 0}}, scroll_x = 0x0, scroll_y = 0x0,
min_width = 116, max_width = 18708, byte_offset = 0, text = 0x0, length = 0, space = 0, href = 0x0,
target = 0x0, title = 0x0, columns = 1, rows = 1, start_column = 0, next = 0x0, prev = 0x1065740,
children = 0x106ae60, last = 0x16bd830, parent = 0x10650a0, inline_end = 0x0, float_children = 0x0,
next_float = 0x0, float_container = 0x0, clear_level = 0, list_marker = 0x0, col = 0x0, gadget = 0x0,
usemap = 0x0, id = 0x0, background = 0x0, object = 0x0, object_params = 0x0, iframe = 0x0,
node = 0x112ae80}
(gdb) p *box->parent->parent->parent->parent->parent->parent->parent->parent->parent->parent
$12 = {type = BOX_BLOCK, flags = 2112, styles = 0x1077700, style = 0x1064d70, x = 0, y = 5, width = 983,
height = 61415, descendant_x0 = 0, descendant_y0 = -15, descendant_x1 = 1015, descendant_y1 = 61415,
margin = {0, 0, 0, 0}, padding = {0, 0, 0, 0}, border = {{style = CSS_BORDER_STYLE_NONE,
c = 4278190080, width = 0}, {style = CSS_BORDER_STYLE_NONE, c = 4278190080, width = 0}, {
style = CSS_BORDER_STYLE_NONE, c = 4278190080, width = 0}, {style = CSS_BORDER_STYLE_NONE,
c = 4278190080, width = 0}}, scroll_x = 0x0, scroll_y = 0x0, min_width = 116, max_width = 18708,
byte_offset = 0, text = 0x0, length = 0, space = 0, href = 0x0, target = 0x0, title = 0x0,
columns = 1, rows = 1, start_column = 0, next = 0x0, prev = 0x0, children = 0x1065740,
last = 0x106aa80, parent = 0x1064be0, inline_end = 0x0, float_children = 0x0, next_float = 0x0,
float_container = 0x0, clear_level = 1868785012, list_marker = 0x0, col = 0x0, gadget = 0x0,
usemap = 0x0, id = 0x0, background = 0x0, object = 0x0, object_params = 0x0, iframe = 0x0,
node = 0x1123990}
(gdb) p *box->parent->parent->parent->parent->parent->parent->parent->parent->parent->parent->parent
$13 = {type = BOX_BLOCK, flags = 2112, styles = 0xffe6f0, style = 0x1314e50, x = 0, y = 0, width = 983,
height = 61420, descendant_x0 = 0, descendant_y0 = -10, descendant_x1 = 1015, descendant_y1 = 61420,
margin = {0, 0, 0, 0}, padding = {0, 0, 0, 0}, border = {{style = CSS_BORDER_STYLE_NONE,
c = 4278190080, width = 0}, {style = CSS_BORDER_STYLE_NONE, c = 4278190080, width = 0}, {
style = CSS_BORDER_STYLE_NONE, c = 4278190080, width = 0}, {style = CSS_BORDER_STYLE_NONE,
c = 4278190080, width = 0}}, scroll_x = 0x0, scroll_y = 0x0, min_width = 116, max_width = 18708,
byte_offset = 0, text = 0x0, length = 0, space = 0, href = 0x0, target = 0x0, title = 0x0,
columns = 1, rows = 1, start_column = 0, next = 0x0, prev = 0x0, children = 0x10650a0,
last = 0x10650a0, parent = 0x0, inline_end = 0x0, float_children = 0x13d63e0, next_float = 0x0,
float_container = 0x0, clear_level = 0, list_marker = 0x0, col = 0x0, gadget = 0x0, usemap = 0x0,
id = 0x0, background = 0x0, object = 0x0, object_params = 0x0, iframe = 0x0, node = 0x10d9660} |
|
|
|
|
|
|
the failing boxes parent is created with render/box_construct.c:1548:box_image()
called from 863:box_construct_element()
I cannot immediately see how a child box is created in that case. |
|
|
(0000875)
|
Michael Drake
|
2015-07-08 23:19
(Last edited: 2015-07-08 23:20) |
|
The attached test.html and image reproduce the bug here.
It looks like something related to generated pseudo elements (:after in this case) that is happening on the initial layout pass before image dimensions are known.
More investigation needed.
|
|
|
|
Confirmed fixed in 3.4 release |
|