Trying to fix something you don't understand by randomly changing related things is not going to be very productive.
in reply to Re^2: call to Net::SSH2 functions crashes caller object
in thread call to Net::SSH2 functions crashes caller object
Try to find where and why the variable gets corrupted and then write a proper patch, or just do as I toll you on my previous post and send a bug report to the author.
Anyway, I find hard to imagine a bug causing a SEGV error that could be fixed by just changing a package variable from lexical to global.
Is your program using threads?