-
-
Notifications
You must be signed in to change notification settings - Fork 30.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
segfault in mmap object when using __index__ method that closes the mmap #103987
Comments
Yes, adding @cfbolz would you like to send a PR? :) |
heh, in principle yes, but I am currently busy doing an equivalent fix in pypy ;-) |
Hi @sobolevn I can create a PR, I guess it's a one-line change , I don't know whether we need to modify some test or not |
@Agent-Hellboy yes, adding regression tests for crashes is a must :) |
okay, Thanks, let me explore
|
Yes, looks correct to me |
that's what I went with too. there's an interesting corner case with this kind of code: ...
m = mmap.mmap(...)
m.close()
m["abc"] should this give a TypeError because of the invalid index type? or an error that the mmap is closed (as it does now)? if the latter, you would have to check twice whether the mmap is closed. |
I think that's the case, because other exceptions might break users' code (unlikely, but possible). |
Co-authored-by: sunmy2019 <[email protected]> Co-authored-by: Jelle Zijlstra <[email protected]>
(cherry picked from commit ceaa4c3) Co-authored-by: Prince Roshan <[email protected]> Co-authored-by: sunmy2019 <[email protected]> Co-authored-by: Jelle Zijlstra <[email protected]>
…4677) gh-103987: fix several crashes in mmap module (GH-103990) (cherry picked from commit ceaa4c3) Co-authored-by: Prince Roshan <[email protected]> Co-authored-by: sunmy2019 <[email protected]> Co-authored-by: Jelle Zijlstra <[email protected]>
* main: (30 commits) pythongh-103987: fix several crashes in mmap module (python#103990) docs: fix wrong indentation causing rendering error in dis page (python#104661) pythongh-94906: Support multiple steps in math.nextafter (python#103881) pythongh-104472: Skip `test_subprocess.ProcessTestCase.test_empty_env` if ASAN is enabled (python#104667) pythongh-103839: Allow building Tkinter against Tcl 8.7 without external libtommath (pythonGH-103842) pythongh-85984: New additions and improvements to the tty library. (python#101832) pythongh-104659: Consolidate python examples in enum documentation (python#104665) pythongh-92248: Deprecate `type`, `choices`, `metavar` parameters of `argparse.BooleanOptionalAction` (python#103678) pythongh-104645: fix error handling in marshal tests (python#104646) pythongh-104600: Make type.__type_params__ writable (python#104634) pythongh-104602: Add additional test for listcomp with lambda (python#104639) pythongh-104640: Disallow walrus in comprehension within type scopes (python#104641) pythongh-103921: Rename "type" header in argparse docs (python#104654) Improve readability of `typing._ProtocolMeta.__instancecheck__` (python#104649) pythongh-96522: Fix deadlock in pty.spawn (python#96639) pythonGH-102818: Do not call `PyTraceBack_Here` in sys.settrace trampoline. (pythonGH-104579) pythonGH-103545: Add macOS specific constants for ``os.setpriority`` to ``os`` (python#104606) pythongh-104623: Update macOS installer to SQLite 3.42.0 (pythonGH-104624) pythongh-104619: never leak comprehension locals to outer locals() (python#104637) pythongh-104602: ensure all cellvars are known up front (python#104603) ...
Thanks everyone! |
The following (artificial) code segfaults CPython (I tried a bunch of versions, including git main) on my x86 Ubuntu Linux 22.10:
The problem is this code in
mmapmodule.c
the
CHECK_VALID(NULL)
call which checks whether the mmap object is closed happens before thePyNumber_AsSsize_t
call which closes the object (and similarly for the slice handling which happens further down).Linked PRs
The text was updated successfully, but these errors were encountered: