I suspect you forgot to test with a debug build, there is issues with the string buffer changes somewhere.

ralloc.c:203: reralloc_size: Assertion `ralloc_parent(ptr) == ctx' failed.

#0  0x00007ffff70eb91f in raise () from /lib64/libc.so.6
#1  0x00007ffff70ed51a in abort () from /lib64/libc.so.6
#2  0x00007ffff70e3da7 in __assert_fail_base () from /lib64/libc.so.6
#3  0x00007ffff70e3e52 in __assert_fail () from /lib64/libc.so.6
#4 0x00007ffff442c73c in reralloc_size (ctx=ctx@entry=0x7fffd40cb910, ptr=<optimized out>, size=<optimized out>) at ralloc.c:203 #5 0x00007ffff44b519e in glcpp_preprocess (ralloc_ctx=ralloc_ctx@entry=0x7fffd40c9da0, shader=shader@entry=0x7fffea7cfcc8, info_log=info_log@entry=0x7fffd40ca058, extensions=extensions@entry=0x7ffff43ff070 <add_builtin_defines(_mesa_glsl_parse_state*, void (*)(glcpp_parser*, char const*, int), glcpp_parser*, unsigned int, bool)>, state=state@entry=0x7fffd40c9da0,
    gl_ctx=gl_ctx@entry=0x7fffe85c7010) at glsl/glcpp/pp.c:246
#6 0x00007ffff4402665 in _mesa_glsl_compile_shader (ctx=ctx@entry=0x7fffe85c7010, shader=shader@entry=0x7fffd40c8cc0, dump_ast=dump_ast@entry=false, dump_hir=dump_hir@entry=false, force_recompile=force_recompile@entry=false)
    at glsl/glsl_parser_extras.cpp:2065


On 22/05/17 06:49, Thomas Helland wrote:
This patch series contains some of the work done by Vladislav
in the beginning of March, that seems to have been forgotten.

For reference, that series, with review comments, can be found here:
https://lists.freedesktop.org/archives/mesa-dev/2017-January/139892.html

I've adressed some of the review comments, most notably redoing the
string buffer implementation quite a bit, and adding tests.
The major change is that it is now decoupled from the parser
and instead lives in /src/util/ as a utility for easier reuse.
I've also closely followed the structure of our hash table and set
so that it should be quite familiar for everyone. My implementation
is also null terminated, while Vladislav's implementation was not.
My reasoning behind this was that it's less fragile if someone where
to access the contents of the buffer directly. I've also expanded
with some different functions that allow us to do more stuff.
Obviously this could be expanded upon further if need be.

I've included some of Vladislav's less involved patches that
I think we should get in as soon as possible. I've added Ian's
r-b on the ones that he reviewed (I hope that's OK). The one
patch that is missing from this series is the hand-written
custom parser. While this was the thing that gave the biggest
speed-up, unfortunately it's also a bit harder to review,
so I've left that as a future exercise.

I've run it through my complete shader-db and there's no changes
or breakages, so that's encouraging. It amounts to about a 3%
reduction in runtime and executed instructions on the shader-db run.
It should be noted that the i965 backend is the primary bottleneck
when running shader-db on my computer, so the numbers don't look all
that impressive due to this. I'll see if I can come up with some
numbers using the gallium noop driver.

I have not done a very thorough job on testing that the output
of the preprocessor/parser is the same after this series.
However, there's no changes here that I believe should cause
any issues, so I feel quite confident that this series should
not cause any trouble. The original series did have some issues
discovered by running a fuzzer over it, however I expect that
was caused by the introduced hand-written fast-path scanner and
associated macro substitutaion that are not a part of this series.

CC: Vladislav Egorov <vegorov...@gmail.com>
CC: Ian Romanick <i...@freedesktop.com>

Thomas Helland (5):
   util: Add a string buffer implementation
   util: Add tests for the string buffer
   glsl: Change the parser to use the string buffer
   glcpp: Use string_buffer for line continuation removal
   glcpp: Avoid unnecessary call to strlen

Vladislav Egorov (4):
   glcpp: Avoid unnecessary strcmp()
   glcpp: Skip unnecessary line continuations removal
   ralloc: Use strnlen() inside of strncat()
   glcpp: Use Bloom filter before identifier search

  configure.ac                                    |   1 +
  src/compiler/glsl/glcpp/glcpp-lex.l             |   3 +-
  src/compiler/glsl/glcpp/glcpp-parse.y           | 123 +++++++++-------
  src/compiler/glsl/glcpp/glcpp.h                 |  18 ++-
  src/compiler/glsl/glcpp/pp.c                    |  73 ++++++----
  src/util/Makefile.am                            |   3 +-
  src/util/Makefile.sources                       |   2 +
  src/util/ralloc.c                               |   7 +-
  src/util/string_buffer.c                        | 180 ++++++++++++++++++++++++
  src/util/string_buffer.h                        |  75 ++++++++++
  src/util/tests/string_buffer/Makefile.am        |  34 +++++
  src/util/tests/string_buffer/append_and_print.c |  82 +++++++++++
  12 files changed, 505 insertions(+), 96 deletions(-)
  create mode 100644 src/util/string_buffer.c
  create mode 100644 src/util/string_buffer.h
  create mode 100644 src/util/tests/string_buffer/Makefile.am
  create mode 100644 src/util/tests/string_buffer/append_and_print.c

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to