Skip Menu |

This queue is for tickets about the IPC-SysV CPAN distribution.

Report information
The Basics
Id: 129387
Status: stalled
Priority: 0/
Queue: IPC-SysV

People
Owner: Nobody in particular
Requestors: cbrown [...] akamai.com
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Subject: IPC::SysV memory operations limited to 31-bit offsets
Date: Wed, 1 May 2019 18:10:10 +0000
To: "bug-IPC-SysV [...] rt.cpan.org" <bug-IPC-SysV [...] rt.cpan.org>
From: "Brown, Chris" <cbrown [...] akamai.com>
Looking at IPC::SysV 2.07, memread(). I'm running perl 5.18.2 on rh7 but it shouldn't matter. Offsets, (pos) are passed into the XS calls as "int". For example, a IPC::SharedMem::read(bignumber, littlenumber) boils down to void memread(addr, sv, pos, size) SV *addr SV *sv int pos int size ... Copy(caddr + pos, dst, size, char); ... This limits "bignumber" to a 2^31 offset from addr, the base of the shared memory segment. As you probably guessed I was working with a 2.5G shared memory segment and found that things break. memwrite() has the same issue. I would include a patch but since I have not done XS since about 1995, I would probably muck it up badly. I see a similar issue was resolved a decade ago with the creation of a large shared memory segment. Thanks for your attention.
I've made a change that *might* solve this issue, I'll update this ticket once I've made a new release.