docker分割错误(core dump),在这种情况下该怎么办?

root@ramcharran-VirtualBox:/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无限的核心限制,没有工作。

我已经在本地成功地执行了代码,但是用docker,我似乎得到了一个我不明白的分段错误。

我试图增加没有工作的basedevice存储。 我的docker机由于某种原因没有basedevice存储。

 root@ramcharran-VirtualBox:/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 root@ramcharran-VirtualBox:/home/ramcharran# 

编辑

以下是我的源代码:

 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() 

OUTokenizer没有问题,我已经用gdb,valgrind进行了debugging,并且在每个语句之后还使用了一个打印,并且所有的执行都没有错误。 一旦数据被插入表中,在外部执行器被执行之后,就会发生分段错误。

请帮我解决这个问题。

问题是烧瓶重新启动与subprocess的代码。 在调用tokenize()函数之前检查WERKZEUG_RUN_MAIN环境variables解决了问题。

请参考以下链接了解WERKZEUG_RUN_MAIN环境variables的用法为什么运行Flask dev服务器运行两次?

多谢你们。