踩到 ubuntu libjpeg 的 bug

今天花了一些時間, 想要把 gunicorn 的 script 整理一下。於是找了幾個 solution, 最後決定搭配 upstart 以及一支自己寫的 start.sh 讓 gunicorn 跑起來。後來我發現有一個很奇怪的訊息, 每一次跑起來, 有 request 進來, 就會丟

Error opening file for reading: Permission denied

非常奇妙的事情在於, 不同權限執行 gunicorn 會有不同的結果。以上的錯誤發生在我用 root 執行 gunicorn --user=web 才會發生。我如果使用 web 執行 gunicorn, 或是用 root 執行 gunicorn (但是不加上 --user=web) 都不會有這樣的問題。

Trace code 了許久, 最後發現是在 import PIL 的這一行出錯

import Image from PIL

上網查了一下, 是 ubuntu libjpeg 的問題。Reference 第二篇寫得很明確來龍去脈。

Reference:

  1. Error opening file for reading: Permission denied
  2. seteuid apps report perror() on trying /proc/self/auxv