2

私は、いくつかのデータベースの要素を1つずつ表示しようとしています:

from twisted.web import server, resource
from twisted.internet import reactor
from pymongo import Connection
import time
import pprint


class ZenResource(resource.Resource):
    isLeaf = True

    connection = Connection('...', 27017)
    db = connection.data
    db.authenticate("...","...")
    iter = db.index.find()

    def render_GET(self, request):
        item = self.iter.next()
        # ... simple processing, skipped some simple strings manipulations:
        htmlLines = []
        for textLine in pprint.pformat(item).splitlines():
            htmlLines.append('<br/>%s' % textLine) 
        htmlText = '\n'.join(htmlLines)
        request.setHeader("Content-type", 'text/html; charset=UTF-8')
        return htmlText.encode("utf8")

reactor.listenTCP(48088, server.Site(ZenResource()))
reactor.run()

1 つのシステム (Linux hh 3.0.0-16-generic-pae #28-Ubuntu SMP Fri Jan 27 19:24:01 UTC 2012 i686 i686 i386 GNU/Linux) では、すべて正常に動作します。他のシステム (Linux localhost 2.6.38-8-server #42-Ubuntu SMP Mon Apr 11 03:49:04 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux)

私は以下を得ました:

root@localhost:~# python zen.py  
Bus error

私が考える2つのサーバーの唯一の違いは(x32 / x64の形式は別として)、2番目のサーバーに同様のねじれたプロセスがあることです。このプロセスは重要なことを行っており、テストコードが機能するかどうかを確認するためだけに、終了したり、他の方法で干渉したりしたくありません。

4

2 に答える 2

3

私の最近のケースでは、これはファイルシステムで有効になっている (そして超過している) ユーザークォータに関連していました。パーティションに空き容量が残っていない場合にも発生する可能性があると思います。

于 2016-02-12T16:52:59.827 に答える
2

memtest86+などのツールを試して、マシンのシステム メモリが不良かどうかを判断してください。そうである可能性が高く、データを正しく保存または取得するためのランダムな失敗が問題につながっているようです。

より一般的には、このような問題が発生した場合は、ソフトウェア (この場合は Python) のデバッグ ビルドを取得し、コア ダンプを有効にする必要があります (ulimit(1) を参照)。この構成でクラッシュを再現する場合、gdb を使用してコア ダンプを調べ、どのコードがクラッシュを引き起こしているかを調べることができます。不良メモリ モジュールの場合、クラッシュは通常、コードがすべて正しいように見えるランダムで無意味な場所で発生します (ただし、データが計算されてメモリに格納されると、データがメモリに格納されるまで同じままであるという根本的な仮定に違反するため、とにかく失敗します)。かわった)。

ただし、クラッシュは常にコードの同じ部分で発生し、バグを発見できる場合もあります。次に、バグを修正して次に進みます。:)

于 2012-02-18T14:48:02.927 に答える