#!/usr/bin/perl BEGIN { $| = 1; $^W = 1; } use strict; use autodie; use warnings FATAL => 'syntax'; use Data::Dumper::Concise; use POSIX; use POSIX::RT::Signal qw/sigwaitinfo sigqueue/; use threads; use Scalar::Util qw/refaddr/; use Devel::Pointer::PP; POSIX::sigprocmask( POSIX::SIG_BLOCK, POSIX::SigSet->new(&POSIX::SIGRTMIN) ); my $thr = threads->create( \&_thread ); sub _thread { my $sigset = POSIX::SigSet->new(&POSIX::SIGRTMIN); my $info = sigwaitinfo($sigset); } my $address = 5; refaddr( \$address ); my $new_address = \$address; $$new_address = $$new_address * 4; sigqueue( $$, &POSIX::SIGRTMIN, $address ); $thr->join(); print Dumper($address); my $smash = unsmash_sv( 0 + $address ); print Dumper($smash); exit(0);