Bug 97140

Summary: dd_draw.c:949:11: error: implicit declaration of function 'fmemopen' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
Product: Mesa Reporter: Vinson Lee <vlee>
Component: Mesa coreAssignee: mesa-dev
Status: RESOLVED FIXED QA Contact: mesa-dev
Severity: normal    
Priority: medium CC: maraeo, nhaehnle
Version: unspecifiedKeywords: bisected, regression
Hardware: x86-64 (AMD64)   
OS: Mac OS X (All)   
Whiteboard:
i915 platform: i915 features:

Description Vinson Lee 2016-07-29 23:13:58 UTC
mesa: ebdc82d06532f992aea592265c29a11330e698fa (master 12.1.0-devel)

  CC       dd_draw.lo
dd_draw.c:949:11: error: implicit declaration of function 'fmemopen' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
      f = fmemopen(buf, dctx->max_log_buffer_size, "a");
          ^
dd_draw.c:949:11: note: did you mean 'freopen'?
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/stdio.h:248:7: note: 'freopen'
      declared here
FILE    *freopen(const char * __restrict, const char * __restrict,
         ^
dd_draw.c:949:9: warning: incompatible integer to pointer conversion assigning to 'FILE *' (aka 'struct __sFILE *') from 'int' [-Wint-conversion]
      f = fmemopen(buf, dctx->max_log_buffer_size, "a");
        ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


commit b47727a83ad6b5386f27b2c174a5c0f110a61038
Author: Marek Olšák <marek.olsak@amd.com>
Date:   Tue Jul 19 18:28:24 2016 +0200

    ddebug: implement pipelined hang detection mode
    
    For good performance while being able to generate decent hang reports.
    The report doesn't contain the parsed IB and the buffer list, but it
    isolates the draw call and dumps shaders while not having to flush
    the context.
    
    This is for GPU hangs that are harder to reproduce and require interactive
    playing for minutes or even hours.
    
    dd_pipe.h explains some implementation details. Initializing, copying
    (recording) and clearing states is most of the code.
    
    The performance should be at least 50% of the normal performance depending
    on the circumstances. (i.e. 50% is expected to be the worst case scenario,
    not the best case) The majority of time is spent in
    dump_debug_state(PIPE_DUMP_CURRENT_SHADERS) and that's after all
    the optimizations in later patches. There is no obvious way to optimize
    that further.
    
    Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Comment 1 Vinson Lee 2016-08-08 21:37:40 UTC
commit 840353059a35453e8a960673474e8a37d6f1a97a
Author: Marek Olšák <marek.olsak@amd.com>
Date:   Sat Jul 30 23:54:06 2016 +0200

    ddebug: don't use fmemopen on non-Linux OS
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97140
    
    Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.