pkujhd / goloader

load and run golang code at runtime.
Apache License 2.0
497 stars 58 forks source link

Load error: symName:database/sql.(*DB).Close offset:139266851392960 is overflow! #61

Closed yinhediyi closed 1 year ago

yinhediyi commented 2 years ago

Load error: symName:database/sql.(DB).Close offset:139266851392960 is overflow! Load error: symName:os.(File).Close offset:138253268967776 is overflow! Load error: symName:syscall.(*LazyProc).Call offset:138395175218912 is overflow!

golang: 1.18 os: win10

pkujhd commented 2 years ago

这是windows上对于R_ADDR的远地址重定向没有处理造成的,linux上强制mmap返回32位的地址避免了这个问题,macosx(amd64)默认就是小地址的

修复需要一段时间

pkujhd commented 1 year ago

对于已经存在的类型,使用loader里的symbol, 并且不在relocate它,因为没有必要. 这样可以避免R_ADDROFF R_WEAKADDROFF R_METHODOFF 报远地址错误