Skip to content

reload command from example code cannot hook functions on Fedora 30 #48

Open
@nihguy

Description

@nihguy

I'm experiencing a problem with jet-live on Fedora 30. The library is identifying changes to the files correctly, but it is not reloading the code as expected.

The error occurred while trying to follow the example of README.md

I assigned severityString.append("[D]") to the jet::LogSeverity::kDebug on onLog method from ExampleListerner to make the output easier to understand.

Running the code for the first time it was the output:

[I]: Initializing...
[D]: Parsing compilation commands...
[D]: Reading `compile_commands.json` from /home/username/jet-live/build/compile_commands.json
[D]: Success parsing compilation commands, total 48 compilation units
[I]: Load CUs: done
[D]: Root directory: /home/username/jet-live/
[D]: Parsing dependencies...
[D]: Success parsing dependencies
[I]: Load dependencies: done
[I]: Setup file watcher: done
[D]: Loading symbols for  ...
[D]: Symbols loaded: funcs 9541, vars 33, Self
[D]: Loading symbols for linux-vdso.so.1 ...
[E]: Cannot load linux-vdso.so.1 file
[D]: linux-vdso.so.1 has no symbols, skipping
[D]: Loading symbols for /lib64/libpthread.so.0 ...
[D]: Symbols loaded: funcs 497, vars 45, /lib64/libpthread.so.0
[D]: Loading symbols for /lib64/libdl.so.2 ...
[D]: Symbols loaded: funcs 32, vars 8, /lib64/libdl.so.2
[D]: Loading symbols for /lib64/libstdc++.so.6 ...
[D]: /lib64/libstdc++.so.6 has no symbols, skipping
[D]: Loading symbols for /lib64/libm.so.6 ...
[D]: Symbols loaded: funcs 1910, vars 3, /lib64/libm.so.6
[D]: Loading symbols for /lib64/libgcc_s.so.1 ...
[D]: /lib64/libgcc_s.so.1 has no symbols, skipping
[D]: Loading symbols for /lib64/libc.so.6 ...
[D]: Symbols loaded: funcs 5248, vars 468, /lib64/libc.so.6
[D]: Loading symbols for /lib64/ld-linux-x86-64.so.2 ...
[D]: Symbols loaded: funcs 310, vars 40, /lib64/ld-linux-x86-64.so.2
[I]: Load symbols: done
[D]: Loading exported symbols list...
[D]: Done, total exported symbols: 12528 in 48 files
[I]: Load exported symbols: done
[I]: Ready
Enter command
Available commands: 'exit', 'reload', 'hello'
Hello
ttl: 2 > Hi there!

So I added an exclamation mark to the end of the phrase "Hi there!" that is displayed at the output of the command Hello.

[I]: Compiling: SimpleCommandInterpreter.cpp
[I]: Success: SimpleCommandInterpreter.cpp

Jet-live was able to interpret the change correctly, but when I ran the command again, the output had not been changed.

Hello
ttl: 3 > Hi there!

Then I ran the command reload and the errors below appeared (with status -22):

reload
[I]: Trying to reload code...
[I]: Linking...
[D]: Link command:
/usr/bin/g++ -fPIC -shared -g -Wl,-Ttext-segment,0xa42000 -Wl,-z,max-page-size=0x1000 -Wl,-export-dynamic -Wl,-soname,lib_reload1.so -o lib_reload1.so "/home/username/jet-live/build/example/CMakeFiles/example.dir/src/SimpleCommandInterpreter.cpp.o" 
[I]: Linked successfully
[D]: Opening /home/username/jet-live/build/lib_reload1.so...
[D]: Library opened successfully
[D]: Loading symbols from /home/username/jet-live/build/lib_reload1.so...
[D]: Symbols loaded
[D]: Loading exported symbols list...
[D]: Done, total exported symbols: 21 in 1 files
[D]: Loading link-time relocations...
[D]: Done, relocated: 0/0
[D]: Hooking functions...
[E]: Cannot hook function: _ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_, status -22
[E]: Cannot hook function: _ZN9__gnu_cxx12__to_xstringINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEET_PFiPT0_mPKS8_P13__va_list_tagEmSB_z, status -22
[E]: Cannot hook function: _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_, status -22
[E]: Cannot hook function: _ZNSt11char_traitsIcE6lengthEPKc, status -22
[E]: Cannot hook function: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_construct_auxIPcEEvT_S7_St12__false_type, status -22
[E]: Cannot hook function: _ZN24SimpleCommandInterpreterC2Ei, status -22
[E]: Cannot hook function: _ZNSt7__cxx119to_stringEi, status -22
[E]: Cannot hook function: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_, status -22
[E]: Cannot hook function: _ZSt4moveIRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEONSt16remove_referenceIT_E4typeEOS8_, status -22
[E]: Cannot hook function: _ZSt8distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_, status -22
[E]: Cannot hook function: _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_, status -22
[E]: Cannot hook function: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_, status -22
[E]: Cannot hook function: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_, status -22
[E]: Cannot hook function: _ZSt19__iterator_categoryIPcENSt15iterator_traitsIT_E17iterator_categoryERKS2_, status -22
[E]: Cannot hook function: _ZN24SimpleCommandInterpreter10runCommandERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE, status -22
[E]: Cannot hook function: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag, status -22
[E]: Cannot hook function: _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_, status -22
[E]: Cannot hook function: _ZNK24SimpleCommandInterpreter25getCurrentCommandsCounterEv, status -22
[E]: Cannot hook function: _ZN9__gnu_cxx17__is_null_pointerIcEEbPT_, status -22
[E]: Cannot hook function: _ZSt10__distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag, status -22
[E]: Cannot hook function: _ZN24SimpleCommandInterpreterC1Ei, status -22
[D]: Done, hooked: 0/21
[D]: Copying statics from old code to new one...
[D]: Done, copied: 1/1
[I]: Code reloaded

I'm using Cmake 3.14.5 and g++ 9.2.1.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions