2017-01-29 9 views
1
[email protected]:/home/ramcharran/src# docker run -it dll_img /bin/bash 
bash-4.3# python3 app.py 
connection to cursor 
registering tokenizer 
virtual table created 
inserted data into virtual table 
Segmentation fault (core dumped) 
bash-4.3# 

ulimit -c unlimitedでコア制限を上げようとしましたが動作しませんでした。ドッカーのセグメンテーションフォルト(コアダンプ)、この状況で何をすべきか?

私はコードをローカルで正常に実行しましたが、ドッカーと一緒に私は分からないセグメント違反があるようです。

私は、動作しなかったベースデバイスのストレージを増やそうとしました。 私のドッカーマシンには何らかの理由でベースデバイスストレージがありません。

[email protected]:/home/ramcharran# docker info 
Containers: 6 
Running: 0 
Paused: 0 
Stopped: 6 
Images: 19 
Server Version: 1.12.3 
**Storage Driver: aufs 
Root Dir: /var/lib/docker/aufs 
Backing Filesystem: extfs 
Dirs: 27** 
Dirperm1 Supported: true 
Logging Driver: json-file 
Cgroup Driver: cgroupfs 
Plugins: 
Volume: local 
Network: bridge host null overlay 
Swarm: inactive 
Runtimes: runc 
Default Runtime: runc 
Security Options: apparmor seccomp 
Kernel Version: 4.4.0-59-generic 
Operating System: Ubuntu 16.04.1 LTS 
OSType: linux 
Architecture: x86_64 
CPUs: 4 
Total Memory: 8.046 GiB 
Name: ramcharran-VirtualBox 
ID: WRT4:KUPK:BFBA:EJ5G:XWT2:7FXX:UX42:NALM:FNNJ:Z4XV:X44U:NFOT 
Docker Root Dir: /var/lib/docker 
Debug Mode (client): false 
Debug Mode (server): false 
Registry: https://index.docker.io/v1/ 
WARNING: No swap limit support 
Insecure Registries: 
127.0.0.0/8 
[email protected]:/home/ramcharran# 

EDIT

次は私のソースコードです:OUTokenizerは問題がない

import json 

import apsw 
import sqlitefts as fts 

import search 
from search import OUWordTokenizer 

from flask import Flask 
app = Flask(__name__) 

#tracker = SummaryTracker() 
def tokenize(): 
    connection = apsw.Connection('texts.db', flags=apsw.SQLITE_OPEN_READWRITE) 
    c = connection.cursor() 
    print("connection to cursor") 
    fts.register_tokenizer(c, 'oulatin', fts.make_tokenizer_module(OUWordTokenizer('latin'))) 
    print("registering tokenizer") 
    c.execute("begin;") 
    c.execute("CREATE VIRTUAL TABLE IF NOT EXISTS text_idx USING fts3 (id, title, book, author, date, chapter, verse, passage, link, documentType, tokenize={});".format("oulatin")) 
    c.execute("commit;") 
    print("virtual table created") 
    c.execute("INSERT INTO text_idx (id, title, book, author, date, chapter, verse, passage, link, documentType) SELECT id, title, book, author, date, chapter, verse, passage, link, documentType FROM texts;") 
    print ("inserted data into virtual table") 

@app.route('/') 
def hello_world(): 
    print ("Hello world") 
    search.word_tokenizer 
    print ("word_tokenizers") 
    return json.dumps({"name": "test"}) 


if __name__ == '__main__': 
    tokenize() 
    app.run(debug=True, host='0.0.0.0') 
#tracker.print_diff() 

、私はvalgrindのと、各後にプリントを使用して、GDBでそれをデバッグしていますそのすべてがエラーなく実行されました。 OUtokenizerが実行された後にデータがテーブルに挿入されると、セグメンテーションフォルトが発生します。

この問題を解決するのを手伝ってください。

+0

Docker自体がsegfaultを生成していないため、アプリケーションはです。あなたのアプリケーションを見ることなく、私はこの質問に答えることは可能だとは思わない。 – BMitch

+0

このコメントの一部としてコード全体を取得できませんでした。 http://stackoverflow.com/questions/41861941/how-to-understand-why-flask-is-restarting-what-is-the-exception-that-is-causeing あなたはとても親切に行きましょうか?リンク?お願いします。 –

+0

実行しているコードはコメントであってはなりません。あなたの質問の編集でなければなりません。そのために上記のボタンがあります。 – BMitch

答えて

0

問題は、フラスコが子プロセスでコードを再開することで発生しました。 tokenize()関数を呼び出す前にWERKZEUG_RUN_MAIN環境変数を調べて問題を解決しました。

はWERKZEUG_RUN_MAIN環境変数の使用 Why does running the Flask dev server run itself twice?

みんなありがとうを理解するには次のリンクを参照してください。

関連する問題