| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -46,7 +46,6 @@ | |||
| 46 | 46 | import copy | |
| 47 | 47 | import io | |
| 48 | 48 | ||
| 49 | - | ||
| 50 | 49 | if sys.version_info >= (3, 5): | |
| 51 | 50 | from importlib import machinery, util | |
| 52 | 51 | def get_module(name, path): | |
@@ -572,6 +571,7 @@ def __init__(self, context, path, arch, mode): | |||
| 572 | 571 | self.mode = mode | |
| 573 | 572 | self.parallel = False | |
| 574 | 573 | self.disable_core_files = False | |
| 574 | + self.max_virtual_memory = None | ||
| 575 | 575 | self.serial_id = 0 | |
| 576 | 576 | self.thread_id = 0 | |
| 577 | 577 | ||
@@ -595,7 +595,8 @@ def RunCommand(self, command, env): | |||
| 595 | 595 | self.context, | |
| 596 | 596 | self.context.GetTimeout(self.mode, self.config.section), | |
| 597 | 597 | env, | |
| 598 | - disable_core_files = self.disable_core_files) | ||
| 598 | + disable_core_files = self.disable_core_files, | ||
| 599 | + max_virtual_memory = self.max_virtual_memory) | ||
| 599 | 600 | return TestOutput(self, | |
| 600 | 601 | full_command, | |
| 601 | 602 | output, | |
@@ -759,7 +760,8 @@ def CheckedUnlink(name): | |||
| 759 | 760 | PrintError("os.unlink() " + str(e)) | |
| 760 | 761 | break | |
| 761 | 762 | ||
| 762 | - def Execute(args, context, timeout=None, env=None, disable_core_files=False, stdin=None): | ||
| 763 | + def Execute(args, context, timeout=None, env=None, disable_core_files=False, | ||
| 764 | + stdin=None, max_virtual_memory=None): | ||
| 763 | 765 | (fd_out, outname) = tempfile.mkstemp() | |
| 764 | 766 | (fd_err, errname) = tempfile.mkstemp() | |
| 765 | 767 | ||
@@ -781,11 +783,27 @@ def Execute(args, context, timeout=None, env=None, disable_core_files=False, std | |||
| 781 | 783 | ||
| 782 | 784 | preexec_fn = None | |
| 783 | 785 | ||
| 786 | + def disableCoreFiles(): | ||
| 787 | + import resource | ||
| 788 | + resource.setrlimit(resource.RLIMIT_CORE, (0,0)) | ||
| 789 | + | ||
| 784 | 790 | if disable_core_files and not utils.IsWindows(): | |
| 785 | - def disableCoreFiles(): | ||
| 791 | + preexec_fn = disableCoreFiles | ||
| 792 | + | ||
| 793 | + if max_virtual_memory is not None and utils.GuessOS() == 'linux': | ||
| 794 | + def setMaxVirtualMemory(): | ||
| 786 | 795 | import resource | |
| 787 | 796 | resource.setrlimit(resource.RLIMIT_CORE, (0,0)) | |
| 788 | - preexec_fn = disableCoreFiles | ||
| 797 | + resource.setrlimit(resource.RLIMIT_AS, (max_virtual_memory,max_virtual_memory + 1)) | ||
| 798 | + | ||
| 799 | + if preexec_fn is not None: | ||
| 800 | + prev_preexec_fn = preexec_fn | ||
| 801 | + def setResourceLimits(): | ||
| 802 | + setMaxVirtualMemory() | ||
| 803 | + prev_preexec_fn() | ||
| 804 | + preexec_fn = setResourceLimits | ||
| 805 | + else: | ||
| 806 | + preexec_fn = setMaxVirtualMemory | ||
| 789 | 807 | ||
| 790 | 808 | (process, exit_code, timed_out) = RunProcess( | |
| 791 | 809 | context, | |
| Back | FazBrowse Home | New Git URL |
0 commit comments