On Fri, Jun 05, 2020 at 01:02:54PM -0700, Nick Desaulniers wrote:
> Right, so my script would have printed out the list of all local
> variables in f2fs_fill_super() and their sizes.  With that information
> handy, we could assess if there were any smoking guns of clearly
> incorrect large stack allocations vs death by a thousand cuts.  Your
> change may not have added a new large local allocation, simply tipped
> the scale or changed inlining decisions.  They may be other local
> variables in this call chain that we should reassess allocation
> strategy; ie. dynamic or static rather than local, to avoid the
> potential for exhausting kernel stack.

For comparison, I also tried building for x86_64 (with gcc 10.1.0) and running
your script.  But it crashed:

f2fs_fill_super:
        8       struct f2fs_sb_info*    sbi
        8       struct f2fs_super_block*        raw_super
        8       struct inode*           root
        4       int                     err
Unsupported type info for bool, implement me!
DIE DW_TAG_typedef, size=12, has_children=False
    |DW_AT_name        :  AttributeValue(name='DW_AT_name', 
form='DW_FORM_strp', value=b'bool', raw_value=2068, offset=691)
    |DW_AT_decl_file   :  AttributeValue(name='DW_AT_decl_file', 
form='DW_FORM_data1', value=36, raw_value=36, offset=695)
    |DW_AT_decl_line   :  AttributeValue(name='DW_AT_decl_line', 
form='DW_FORM_data1', value=30, raw_value=30, offset=696)
    |DW_AT_decl_column :  AttributeValue(name='DW_AT_decl_column', 
form='DW_FORM_data1', value=17, raw_value=17, offset=697)
    |DW_AT_type        :  AttributeValue(name='DW_AT_type', 
form='DW_FORM_ref4', value=702, raw_value=702, offset=698)

        0       None                    skip_recovery
Unsupported type info for bool, implement me!
DIE DW_TAG_typedef, size=12, has_children=False
    |DW_AT_name        :  AttributeValue(name='DW_AT_name', 
form='DW_FORM_strp', value=b'bool', raw_value=2068, offset=691)
    |DW_AT_decl_file   :  AttributeValue(name='DW_AT_decl_file', 
form='DW_FORM_data1', value=36, raw_value=36, offset=695)
    |DW_AT_decl_line   :  AttributeValue(name='DW_AT_decl_line', 
form='DW_FORM_data1', value=30, raw_value=30, offset=696)
    |DW_AT_decl_column :  AttributeValue(name='DW_AT_decl_column', 
form='DW_FORM_data1', value=17, raw_value=17, offset=697)
    |DW_AT_type        :  AttributeValue(name='DW_AT_type', 
form='DW_FORM_ref4', value=702, raw_value=702, offset=698)

        0       None                    need_fsck
        8       char*                   options
        4       int                     recovery
        4       int                     i
        4       int                     valid_super_block
        8       struct curseg_info*     seg_i
        4       int                     retry_cnt
        0       struct lock_class_key   __key
        0       struct lock_class_key   __key
        0       struct lock_class_key   __key
        0       struct lock_class_key   __key
        0       struct lock_class_key   __key
        4       int                     n
        4       int                     j
        0       struct lock_class_key   __key
        0       struct lock_class_key   __key
array_size:
Unsupported type info for size_t, implement me!
DIE DW_TAG_typedef, size=12, has_children=False
    |DW_AT_name        :  AttributeValue(name='DW_AT_name', 
form='DW_FORM_strp', value=b'size_t', raw_value=1942, offset=746)
    |DW_AT_decl_file   :  AttributeValue(name='DW_AT_decl_file', 
form='DW_FORM_data1', value=36, raw_value=36, offset=750)
    |DW_AT_decl_line   :  AttributeValue(name='DW_AT_decl_line', 
form='DW_FORM_data1', value=55, raw_value=55, offset=751)
    |DW_AT_decl_column :  AttributeValue(name='DW_AT_decl_column', 
form='DW_FORM_data1', value=26, raw_value=26, offset=752)
    |DW_AT_type        :  AttributeValue(name='DW_AT_type', 
form='DW_FORM_ref4', value=441, raw_value=441, offset=753)

        0       None                    bytes
Unsupported type info for size_t, implement me!
DIE DW_TAG_typedef, size=12, has_children=False
    |DW_AT_name        :  AttributeValue(name='DW_AT_name', 
form='DW_FORM_strp', value=b'size_t', raw_value=1942, offset=746)
    |DW_AT_decl_file   :  AttributeValue(name='DW_AT_decl_file', 
form='DW_FORM_data1', value=36, raw_value=36, offset=750)
    |DW_AT_decl_line   :  AttributeValue(name='DW_AT_decl_line', 
form='DW_FORM_data1', value=55, raw_value=55, offset=751)
    |DW_AT_decl_column :  AttributeValue(name='DW_AT_decl_column', 
form='DW_FORM_data1', value=26, raw_value=26, offset=752)
    |DW_AT_type        :  AttributeValue(name='DW_AT_type', 
form='DW_FORM_ref4', value=441, raw_value=441, offset=753)

        0       None                    __a
Unsupported type info for size_t, implement me!
DIE DW_TAG_typedef, size=12, has_children=False
    |DW_AT_name        :  AttributeValue(name='DW_AT_name', 
form='DW_FORM_strp', value=b'size_t', raw_value=1942, offset=746)
    |DW_AT_decl_file   :  AttributeValue(name='DW_AT_decl_file', 
form='DW_FORM_data1', value=36, raw_value=36, offset=750)
    |DW_AT_decl_line   :  AttributeValue(name='DW_AT_decl_line', 
form='DW_FORM_data1', value=55, raw_value=55, offset=751)
    |DW_AT_decl_column :  AttributeValue(name='DW_AT_decl_column', 
form='DW_FORM_data1', value=26, raw_value=26, offset=752)
    |DW_AT_type        :  AttributeValue(name='DW_AT_type', 
form='DW_FORM_ref4', value=441, raw_value=441, offset=753)

        0       None                    __b
Unsupported type info for size_t, implement me!
DIE DW_TAG_typedef, size=12, has_children=False
    |DW_AT_name        :  AttributeValue(name='DW_AT_name', 
form='DW_FORM_strp', value=b'size_t', raw_value=1942, offset=746)
    |DW_AT_decl_file   :  AttributeValue(name='DW_AT_decl_file', 
form='DW_FORM_data1', value=36, raw_value=36, offset=750)
    |DW_AT_decl_line   :  AttributeValue(name='DW_AT_decl_line', 
form='DW_FORM_data1', value=55, raw_value=55, offset=751)
    |DW_AT_decl_column :  AttributeValue(name='DW_AT_decl_column', 
form='DW_FORM_data1', value=26, raw_value=26, offset=752)
    |DW_AT_type        :  AttributeValue(name='DW_AT_type', 
form='DW_FORM_ref4', value=441, raw_value=441, offset=753)

Traceback (most recent call last):
  File "/home/e/src/frame-larger-than/frame_larger_than.py", line 147, in 
<module>
    parse_file(elffile.get_dwarf_info(), sys.argv[2])
  File "/home/e/src/frame-larger-than/frame_larger_than.py", line 129, in 
parse_file
    parse_file(dwarf_info, get_name(ti))
  File "/home/e/src/frame-larger-than/frame_larger_than.py", line 125, in 
parse_file
    print_var(dwarf_info, DIE)
  File "/home/e/src/frame-larger-than/frame_larger_than.py", line 111, in 
print_var
    type_string = get_type_string(dwarf_info, type_info)
  File "/home/e/src/frame-larger-than/frame_larger_than.py", line 85, in 
get_type_string
    return get_type_string(dwarf_info, pointed_to_type) + '*'
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'



_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to