On 03/16, Ravi Bangoria wrote: > > On 03/15/2018 08:19 PM, Oleg Nesterov wrote: > > On 03/13, Ravi Bangoria wrote: > >> For tiny binaries/libraries, different mmap regions points to the > >> same file portion. In such cases, we may increment reference counter > >> multiple times. > > Yes, > > > >> But while de-registration, reference counter will get > >> decremented only by once > > could you explain why this happens? sdt_increment_ref_ctr() and > > sdt_decrement_ref_ctr() look symmetrical, _decrement_ should see > > the same mappings? ... > # strace -o out python > mmap(NULL, 2738968, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fff92460000 > mmap(0x7fff926a0000, 327680, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x230000) = 0x7fff926a0000 > mprotect(0x7fff926a0000, 65536, PROT_READ) = 0 Ah, in this case everything is clear, thanks. I was confused by the changelog, I misinterpreted it as if inc/dec are not balanced in case of multiple mappings even if the application doesn't play with mmap/mprotect/etc. And it seems that you are trying to confuse yourself, not only me ;) Just suppose that an application does mmap+munmap in a loop and the mapped region contains uprobe but not the counter. And this all makes me think that we should do something else. Ideally, install_breakpoint() and remove_breakpoint() should inc/dec the counter if they do not fail... Btw, why do we need a counter, not a boolean? Who else can modify it? Or different uprobes can share the same counter? Oleg. -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html