Public bug reported: Binary package hint: perl
Perl's syscall() function can be used to make system calls by passing the syscall number and a list of arguments. The syscall numbers are defined symbolically in syscall.ph. On 32-bit x86 for Dapper, Edgy, Sarge, and Etch, these values are correct. On IA-32 Feisty, the syscall numbers are the values for the AMD64 architecture instead. As a result, scripts which use the syscall() function on IA-32 Feisty will inadvertently execute the wrong system calls. Demo script: #!/usr/bin/perl require 'syscall.ph'; print "open: " . __NR_open() . "\n"; print "close: " . __NR_close() . "\n"; print "sync: " . __NR_sync() . "\n"; This will print 5, 6, and 36 on most IA-32 systems, but 2, 3, 162 on Feisty. Test case: #!/usr/bin/perl require 'syscall.ph'; syscall(&SYS_sync); stracing this script on Feisty will show a call to nanosleep() with garbage arguments; nanosleep() is syscall 162 on IA-32. ** Affects: perl (Ubuntu) Importance: Undecided Status: Unconfirmed -- Feisty: perl syscall.ph has wrong syscall numbers on IA32 https://bugs.launchpad.net/bugs/112371 You received this bug notification because you are a member of Ubuntu Bugs, which is the bug contact for Ubuntu. -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs