diff --git a/codalab/lib/worksheet_util.py b/codalab/lib/worksheet_util.py
index 5b3868a7..6103459c 100644
--- a/codalab/lib/worksheet_util.py
+++ b/codalab/lib/worksheet_util.py
@@ -767,6 +767,7 @@ def interpret_items(schemas, raw_items, db_model=None):
                             'status': FetchStatusSchema.get_unknown_status(),
                             'header': header,
                             'rows': rows,
+                            'sort_keys': [bundle_info["sort_key"]],
                         }
                     )
                     .data
diff --git a/codalab/worker/docker_utils.py b/codalab/worker/docker_utils.py
index a5d2e43c..4ebf0b10 100644
--- a/codalab/worker/docker_utils.py
+++ b/codalab/worker/docker_utils.py
@@ -23,12 +23,16 @@ DEFAULT_CONTAINER_RUNNING_TIME = 0
 # Docker Registry HTTP API v2 URI prefix
 URI_PREFIX = 'https://hub.docker.com/v2/repositories/'
 
-# This specific error happens when a user specifies an image with an incompatible version of Cuda
+# This specific error happens when a user specifies an image with an incompatible version of CUDA
 NVIDIA_MOUNT_ERROR_REGEX = (
     '[\s\S]*OCI runtime create failed[\s\S]*stderr:[\s\S]*nvidia-container-cli: '
     'mount error: file creation failed:[\s\S]*nvidia-smi'
 )
-
+# This error happens when the memory requested by user is not enough to start a docker container
+MEMORY_LIMIT_ERROR_REGEX = (
+    '[\s\S]*OCI runtime create failed[\s\S]*failed to write[\s\S]*'
+    'memory.limit_in_bytes: device or resource busy[\s\S]*'
+)
 
 logger = logging.getLogger(__name__)
 client = docker.from_env(timeout=DEFAULT_TIMEOUT)
@@ -44,6 +48,8 @@ def wrap_exception(message):
                 error_message = format_error_message(e)
                 if re.match(NVIDIA_MOUNT_ERROR_REGEX, str(exception)):
                     raise DockerUserErrorException(error_message)
+                elif re.match(MEMORY_LIMIT_ERROR_REGEX, str(exception)):
+                    raise DockerUserErrorException(error_message)
                 else:
                     raise DockerException(error_message)
 

Requesting too little memory for a run can cause a worker to go down
Requesting as little as `10m` for a run can cause a worker to go down with the following error:
```
2020-06-27 03:09:59,180 Cannot start Docker container: Unable to start Docker container: 500 Server Error: 
Internal Server Error ("OCI runtime create failed: container_linux.go:349: starting container process caused 
"process_linux.go:449: container init caused \"process_linux.go:415: setting cgroup config for procHooks process caused 
\\\"failed to write \\\\\\\"10485760\\\\\\\" to \\\\\\\"/sys/fs/cgroup/memory/docker
/07dff7f7e04f43b430b20266840119e33a0070883eaa35d16774525aa352ee5c/memory.limit_in_bytes\\\\\\\": 
write /sys/fs/cgroup/memory/docker/07dff7f7e04f43b430b20266840119e33a0070883eaa35d16774525aa352ee5c/memory.limit_in_bytes: device or resource busy\\\"\"": unknown")
```
See this related issue: https://github.com/moby/moby/issues/38921

diff --git a/tests/worker/docker_utils_test.py b/tests/worker/docker_utils_test.py
index c1688097..a25c06cb 100644
--- a/tests/worker/docker_utils_test.py
+++ b/tests/worker/docker_utils_test.py
@@ -41,3 +41,25 @@ class DockerUtilsTest(unittest.TestCase):
         except Exception as e:
             self.assertEqual(str(e), 'Should throw DockerUserErrorException: ' + error)
             self.assertIsInstance(e, DockerUserErrorException)
+
+    def test_wrap_exception_with_memory_limit_error(self):
+        error = (
+            'Unable to start Docker container: 500 Server Error: Internal Server Error '
+            '("OCI runtime create failed: container_linux.go:349: starting container process '
+            'caused "process_linux.go:449: container init caused \"process_linux.go:415: '
+            'setting cgroup config for procHooks process caused \\\"failed to write\\\\\\\"8388608'
+            '\\\\\\\" to \\\\\\\"/sys/fs/cgroup/memory/docker/a5475e95e98bbb534870dfdf290e91251f54'
+            'e5c13be07a7b6819619a2dba48ef/memory.limit_in_bytes\\\\\\\":write /sys/fs/cgroup/memory'
+            '/docker/a5475e95e98bbb534870dfdf290e91251f54e5c13be07a7b6819619a2dba48ef/'
+            'memory.limit_in_bytes: device or resource busy\\\"\"": unknown'
+        )
+
+        @wrap_exception('Should throw DockerUserErrorException')
+        def throw_memory_error():
+            raise APIError(error)
+
+        try:
+            throw_memory_error()
+        except Exception as e:
+            self.assertEqual(str(e), 'Should throw DockerUserErrorException: ' + error)
+            self.assertIsInstance(e, DockerUserErrorException)

pip install -e .
parse_log_pytest
requirements.txt
pytest pytest-cov pytest-xdist pytest-mock pytest-asyncio pytest
apt-get update apt-get install -y gcc
3.9
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
argcomplete==1.11.1
bottle==0.12.18
certifi==2025.1.31
charset-normalizer==3.4.1
-e git+https://github.com/codalab/codalab-worksheets.git@b310c20dce110f74a2a029a5c3f2d0a11ccfaaae#egg=codalab
coverage==7.8.0
diffimg==0.2.3
docker==3.7.0
docker-pycreds==0.4.0
exceptiongroup==1.2.2
execnet==2.1.1
fusepy==2.0.4
idna==3.10
iniconfig==2.1.0
marshmallow==2.15.1
marshmallow-jsonapi==0.15.1
packaging==24.2
pathtools==0.1.2
pillow==11.1.0
pluggy==1.5.0
psutil==5.6.6
pytest==8.3.5
pytest-asyncio==0.26.0
pytest-cov==6.0.0
pytest-mock==3.14.0
pytest-xdist==3.6.1
python-dateutil==2.8.1
PyYAML==5.3.1
requests==2.32.3
selenium==3.141.0
six==1.11.0
SQLAlchemy==1.3.0
tomli==2.2.1
typing_extensions==4.13.0
urllib3==2.3.0
watchdog==0.10.3
websocket-client==1.8.0

name: codalab-worksheets
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - argcomplete==1.11.1
      - bottle==0.12.18
      - certifi==2025.1.31
      - charset-normalizer==3.4.1
      - codalab==0.5.16
      - coverage==7.8.0
      - diffimg==0.2.3
      - docker==3.7.0
      - docker-pycreds==0.4.0
      - exceptiongroup==1.2.2
      - execnet==2.1.1
      - fusepy==2.0.4
      - idna==3.10
      - iniconfig==2.1.0
      - marshmallow==2.15.1
      - marshmallow-jsonapi==0.15.1
      - packaging==24.2
      - pathtools==0.1.2
      - pillow==11.1.0
      - pluggy==1.5.0
      - psutil==5.6.6
      - pytest==8.3.5
      - pytest-asyncio==0.26.0
      - pytest-cov==6.0.0
      - pytest-mock==3.14.0
      - pytest-xdist==3.6.1
      - python-dateutil==2.8.1
      - pyyaml==5.3.1
      - requests==2.32.3
      - selenium==3.141.0
      - six==1.11.0
      - sqlalchemy==1.3.0
      - tomli==2.2.1
      - typing-extensions==4.13.0
      - urllib3==2.3.0
      - watchdog==0.10.3
      - websocket-client==1.8.0
prefix: /opt/conda/envs/codalab-worksheets

tests/worker/docker_utils_test.py::DockerUtilsTest::test_wrap_exception_with_memory_limit_error
tests/worker/docker_utils_test.py::DockerUtilsTest::test_wrap_exception tests/worker/docker_utils_test.py::DockerUtilsTest::test_wrap_exception_with_cuda_error
codalab/worker/docker_utils.py codalab/lib/worksheet_util.py
codalab/worker/docker_utils.py codalab/lib/worksheet_util.py