Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
3165a75e
Kaydet (Commit)
3165a75e
authored
Agu 14, 2012
tarafından
Richard Oudkerk
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Sade Fark
Merge 3.2
üst
e471772f
e88a2445
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
40 additions
and
2 deletions
+40
-2
forking.py
Lib/multiprocessing/forking.py
+1
-1
mp_fork_bomb.py
Lib/test/mp_fork_bomb.py
+13
-0
test_multiprocessing.py
Lib/test/test_multiprocessing.py
+22
-1
NEWS
Misc/NEWS
+4
-0
No files found.
Lib/multiprocessing/forking.py
Dosyayı görüntüle @
3165a75e
...
@@ -305,7 +305,7 @@ else:
...
@@ -305,7 +305,7 @@ else:
'''
'''
Returns prefix of command line used for spawning a child process
Returns prefix of command line used for spawning a child process
'''
'''
if
process
.
current_process
()
.
_identity
==
()
and
is_forking
(
sys
.
argv
):
if
getattr
(
process
.
current_process
(),
'_inheriting'
,
False
):
raise
RuntimeError
(
'''
raise
RuntimeError
(
'''
Attempt to start a new process before the current process
Attempt to start a new process before the current process
has finished its bootstrapping phase.
has finished its bootstrapping phase.
...
...
Lib/test/mp_fork_bomb.py
0 → 100644
Dosyayı görüntüle @
3165a75e
import
multiprocessing
,
sys
def
foo
():
print
(
"123"
)
# Because "if __name__ == '__main__'" is missing this will not work
# correctly on Windows. However, we should get a RuntimeError rather
# than the Windows equivalent of a fork bomb.
p
=
multiprocessing
.
Process
(
target
=
foo
)
p
.
start
()
p
.
join
()
sys
.
exit
(
p
.
exitcode
)
Lib/test/test_multiprocessing.py
Dosyayı görüntüle @
3165a75e
...
@@ -20,6 +20,7 @@ import random
...
@@ -20,6 +20,7 @@ import random
import
logging
import
logging
import
struct
import
struct
import
test.support
import
test.support
import
test.script_helper
# Skip tests if _multiprocessing wasn't built.
# Skip tests if _multiprocessing wasn't built.
...
@@ -3346,9 +3347,29 @@ class TestTimeouts(unittest.TestCase):
...
@@ -3346,9 +3347,29 @@ class TestTimeouts(unittest.TestCase):
finally
:
finally
:
socket
.
setdefaulttimeout
(
old_timeout
)
socket
.
setdefaulttimeout
(
old_timeout
)
#
# Test what happens with no "if __name__ == '__main__'"
#
class
TestNoForkBomb
(
unittest
.
TestCase
):
def
test_noforkbomb
(
self
):
name
=
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
'mp_fork_bomb.py'
)
if
WIN32
:
rc
,
out
,
err
=
test
.
script_helper
.
assert_python_failure
(
name
)
self
.
assertEqual
(
''
,
out
.
decode
(
'ascii'
))
self
.
assertIn
(
'RuntimeError'
,
err
.
decode
(
'ascii'
))
else
:
rc
,
out
,
err
=
test
.
script_helper
.
assert_python_ok
(
name
)
self
.
assertEqual
(
'123'
,
out
.
decode
(
'ascii'
)
.
rstrip
())
self
.
assertEqual
(
''
,
err
.
decode
(
'ascii'
))
#
#
#
testcases_other
=
[
OtherTest
,
TestInvalidHandle
,
TestInitializers
,
testcases_other
=
[
OtherTest
,
TestInvalidHandle
,
TestInitializers
,
TestStdinBadfiledescriptor
,
TestWait
,
TestInvalidFamily
,
TestStdinBadfiledescriptor
,
TestWait
,
TestInvalidFamily
,
TestFlags
,
TestTimeouts
]
TestFlags
,
TestTimeouts
,
TestNoForkBomb
]
#
#
#
#
...
...
Misc/NEWS
Dosyayı görüntüle @
3165a75e
...
@@ -13,6 +13,10 @@ Core and Builtins
...
@@ -13,6 +13,10 @@ Core and Builtins
Library
Library
-------
-------
- Issue #15646: Prevent equivalent of a fork bomb when using
multiprocessing on Windows without the "if __name__ == '
__main__
'"
idiom.
C API
C API
-----
-----
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment