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