Date: Wed, 19 Nov 2003 12:27:06 -0800 From: Sean McNeil <sean@mcneil.com> To: freebsd-threads@freebsd.org Subject: Losing pages from a mmap in threaded app vs. non-threaded Message-ID: <1069273626.93981.10.camel@blue.mcneil.com>
next in thread | raw e-mail | index | archive | help
Hello all, I have an interesting problem. I've ported a device driver to FreeBSD from Linux and all works just fine with the non-threaded application. When I use threads, the first 8 pages of the map get removed from the process vmspace. A trick is used to mmap different memory pools of the driver. There are 3 of them and an offset is given to mmap to identify which one: 0x10000000 0x20000000 0x40000000 The buffer I see losing the first 8 pages is the one mmap'd with 0x40000000 I haven't looked into the other mmaps, as the above one is the most important. mmap is called correctly and each page is returned appropriately. Again, this works without threads. Is there some mmap region that threads uses that is conflicting with my choice? Is there any known issue with mmap and threads? This problem happens with libc_r.so, libkse.so, and libthr.so. The work I'm doing is split into driver/application and turnaround is high to get the application people to recompile with different values (in progress), so I thought asking here might answer my question sooner than experimentation. All comments/replies are greatly appreciated, Sean
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1069273626.93981.10.camel>