in reply to
Re^2: call to Net::SSH2 functions crashes caller object
in thread call to Net::SSH2 functions crashes caller object
Trying to fix something you don't understand by randomly changing related things is not going to be very productive.
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?