홈페이지에 모인모인을 넣으려고 하다가 자꾸 파이썬이 세그폴트를 내고 죽기에 좀 삽질해서 여기저기 print를 넣어 자세히 살펴봤더니 파이썬 2.2이상에서 sys.stdout을 다른 클래스로 교체해서 그 클래스의 __getattr__ 안에서 sys.stdout을 교체해 버리면, sys.stdout이 정규 FILE *인 줄 알고 거기가 fprintf를 해버려서 다운되는 현상이 있었습니다.
버그 재현을 위해 간추린 소스:
1 2 3 4 5 6 7 8 |
<pre> 1 2 3 4 5 6 7 8 |
1 2 3 4 5 6 7 8 |
#!/usr/bin/env python import sys class StdoutGuard: def __getattr__(self, attr): sys.stdout = sys.__stdout__ raise RuntimeError("Premature access to sys.stdout.%s" % attr) sys.stdout = StdoutGuard() print "Oops!" |
에.. 디버깅해 볼까, 아니면 그냥 버그 보고만 하고 말까 생각 중~~ 히히 .
으아 – 딴지 걸리지 말고 굽신굽신 모드로 ^^;; 파이팅입니다.
화이팅 하세요~^^
우와 그 논문 정말 보고 싶네요!
무사통과하시길~
화이팅!!!
화이팅~
화이팅입니다 !!