Dtrace oddity
Fabian Keil
freebsd-listen at fabiankeil.de
Tue Apr 11 13:42:46 UTC 2017
Christopher Bowman <crb at chrisbowman.com> wrote:
> The man page lists a bunch of reasons for EINVAL so I want to
> investigate this and I don’t quite know good strategies to debug the
> kernel (yet) so I thought I’d experiment with Dtrace a bit. Here is the
> oddity: when I run Dtrace and then run my test program I get the
> following output from Dtrace:
>
> crb at retread:60> dtrace -n 'syscall:freebsd:mmap:entry /execname == "test"/ {}'
> dtrace: description 'syscall:freebsd:mmap:entry ' matched 1
> probe CPU ID FUNCTION:NAME
> 0 63401 mmap:entry
> 0 63401 mmap:entry
> 0 63401 mmap:entry
> 0 63401 mmap:entry
> 0 63401 mmap:entry
> 0 63401 mmap:entry
> 0 63401 mmap:entry
> 0 63401 mmap:entry
> 0 63401 mmap:entry
> 0 63401 mmap:entry
> 0 63401 mmap:entry
> 0 63401 mmap:entry
>
> I think Dtrace is indicating that the mmap syscall was called 12 times
> by my test program yet I can see how the program below would have done
> that.
A bunch of mmap syscalls occur before main is even entered.
Try running your program with truss to see what's going on.
> Here is my program:
[...]
> printf("opening device %s\n", argv[1]);
> int device = open (argv[1], O_RDWR);
> if (device == 0) {
You should check for -1 here.
> void *pa = mmap (0, 4095, PROT_READ | PROT_WRITE, 0, device, 0);
No flags? From the mmap man page:
| [EINVAL] None of MAP_ANON, MAP_PRIVATE, MAP_SHARED, or
| MAP_STACK was specified. At least one of these flags
| must be included.
Fabian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20170411/74c8185b/attachment.sig>
More information about the freebsd-hackers
mailing list