void NewRelicProfiler::beginFrameEx(const char *symbol) {

        NewRelicProfilerFrame *frame = dynamic_cast<NewRelicProfilerFrame *>(m_stack);

        if (m_stack->m_parent) {
            NewRelicProfilerFrame *p = dynamic_cast<NewRelicProfilerFrame *>(frame->m_parent);
            frame->m_nr_depth = p->m_nr_depth + 1;
        } else {
            frame->m_nr_depth  = 0;
        }
        frame->m_nr_segement_code = 0;
        if (frame->m_nr_depth < max_depth) {
            frame->m_nr_segement_code = newrelic_segment_generic_begin(NEWRELIC_AUTOSCOPE, NEWRELIC_AUTOSCOPE, frame->m_name);
        }

    }
int
process_lists_of_files(const char* tmp_file, long newrelic_transaction,
                       long* max_exec_size_found, char* max_exec_fname)
{
    long newr_segm_internal_proc = 0;
    if (newrelic_transaction >= 0) {
        newr_segm_internal_proc =
                newrelic_segment_generic_begin(newrelic_transaction,
                                              NEWRELIC_ROOT_SEGMENT,
                                           "processing_list_execs");
        if (newr_segm_internal_proc < 0)
            fprintf(stderr, "ERROR: newrelic_segment_external_begin() "
                            "returned %ld\n", newr_segm_internal_proc);
    }

    long curr_max_fsize = -1;
    char curr_max_fname[PATH_MAX];

    FILE *f;
    f = fopen(tmp_file, "r");
    if (f) {
        char line[PATH_MAX+32];
        long fsize;
        char fname[PATH_MAX];
        long numb_lines = 0;

        while (fgets(line, sizeof line, f) != NULL) {
             sscanf (line, "%ld %s", &fsize, fname);
             if (fsize > curr_max_fsize) {
                 curr_max_fsize = fsize;
                 strncpy(curr_max_fname, fname, sizeof curr_max_fname);
             }
             numb_lines++;  /* one line per file, as per output of `find` */
        }

        fclose(f);

        if (newrelic_transaction >= 0) {
            char total_numb_executables[32];
            snprintf(total_numb_executables, sizeof total_numb_executables,
                     "%ld", numb_lines);
            int ret_code =
                 newrelic_transaction_add_attribute(newrelic_transaction,
                                                "Custom/ct_NUMBER_EXECUTABLES",
                                                total_numb_executables);
            if (ret_code < 0)
                fprintf(stderr, "ERROR: newrelic_transaction_add_attribute() "
                                "returned %d\n", ret_code);
        }
    } else
        curr_max_fname[0] = '\0';

    *max_exec_size_found = curr_max_fsize;
    strncpy(max_exec_fname, curr_max_fname, sizeof curr_max_fname);

    if (newrelic_transaction >= 0 && newr_segm_internal_proc >= 0) {
        int ret_code =  newrelic_segment_end(newrelic_transaction,
                                             newr_segm_internal_proc);
        if (ret_code < 0)
            fprintf(stderr, "ERROR: newrelic_segment_end() returned %d\n",
                    ret_code);
    }

    return (curr_max_fname[0] != 0) ? 0: -1 ;
}