Author:
- Name: Yusuke Endoh
 Location: JP - Japan
To build:
    makeNOTE: the use of the C compiler optimiser was disabled and -g was enabled for
this entry because it is SUPPOSED to crash and it needs debugging symbols.
Bugs and (Mis)features:
The current status of this entry is:
STATUS: INABIAF - please DO NOT fix
For more detailed information see 2019/endoh in bugs.html.
To use:
    ./progTry:
If you have gdb(1) installed:
    ./try.shNote that in macOS installing gdb(1) takes multiple steps - it’s not just a
matter of installing gdb(1) and that’s that. The try.sh script has
only been tested with linux.
You might also wish to try:
    gdb ./prog || lldb ./progand then type in r (to run program) and then bt (for backtrace).
Judges’ remarks:
The purpose of this program is to crash. You’ll want to have memorized man 7 ascii when debugging it to reveal its purpose.
Author’s remarks:
backtrace quine:
Compile prog.c with no optimization.
    cc -g -O0 -o prog prog.cThen, run it. You will see a segmentation fault.
    $ ./prog
    Segmentation fault (core dumped)Let’s debug. As usual, run it under gdb.
    $ gdb ./prog
    (gdb) run
    Starting program: /home/.../prog
    Program received signal SIGSEGV, Segmentation fault.
    0x0000000000000000 in ?? ()Okay, check the backtrace.
    (gdb) backtrace
    #0  0x0000000000000000 in ?? ()
    #1  0x0000555555555201 in x23 () at prog.c:35
    #2  0x000055555555571a in x64 () at prog.c:100
    #3  0x0000555555555747 in x65 () at prog.c:101
    #4  0x0000555555555774 in x66 () at prog.c:102
    #5  0x00005555555557ce in x69 () at prog.c:105
    #6  0x0000555555555828 in x6e () at prog.c:110
    #7  0x0000555555555747 in x65 () at prog.c:101
        ...See the line numbers and lookup the ASCII table.
     35 = '#'
    100 = 'd'
    101 = 'e'
    102 = 'f'
    105 = 'i'
    110 = 'n'
    101 = 'e'
    ...One more thing:
The original program can be used as a GDB command file.
    gdb -q -x prog.c ./prog | cat
    Reading symbols from ./prog...done.
    Program received signal SIGSEGV, Segmentation fault.
    0x0000000000000000 in ?? ()
    #0  0x0000000000000000 in ?? ()
    #1  0x0000555555555201 in x23 () at prog.c:35
    #2  0x000055555555571a in x64 () at prog.c:100
    #3  0x0000555555555747 in x65 () at prog.c:101
    #4  0x0000555555555774 in x66 () at prog.c:102
    #5  0x00005555555557ce in x69 () at prog.c:105
    #6  0x0000555555555828 in x6e () at prog.c:110
    #7  0x0000555555555747 in x65 () at prog.c:101
    ...By using this, you can confirm that it is actually a quine.
    gdb -q -x prog.c ./prog | sed -n -r 's/#.*:([0-9]+)/\1/p' | awk '{printf "%c",$1}' > prog2.c
    diff prog.c prog2.cInventory for 2019/endoh
Primary files
- prog.c - entry source code
- Makefile - entry Makefile
- prog.orig.c - original source code
- try.sh - script to try entry
- ascii.c - shows character value of ASCII values
Secondary files
- 2019_endoh.tar.bz2 - download entry tarball
- README.md - markdown source for this web page
- .entry.json - entry summary and manifest in JSON
- .gitignore - list of files that should not be committed under git
- .path - directory path from top level directory
- index.html - this web page
 
   
	   
	  