→ lantw44:可以嘗試編成 32 位元的可執行檔 08/14 21:37
→ lantw44:CFLAGS 加上 -m32 LDFLAGS 加上 -melf_i386 08/14 21:38
→ tjjh89017:請問是在哪裡加上參數? 08/16 15:37
→ DarkIllusion:分別加在每個makefile裡面的CFLAGS跟LDFLAGS 10/16 02:02
※ 引述《lantw44 (1101-2019-3028-4786)》之銘言:
: 後來發現,在 x86_64 的機器上編譯成 32 位元可執行檔,大致上功能正常,但有少部分
: 例如文章已讀、未讀會發生很奇怪的狀況
: 在函式庫的部分的 CFLAGS 加上 -fPIC 是可以成功編譯成 64 位元可執行檔的,但無法
: 正常執行 (bbsd 收到 SIGFPE 或 SIGSEGV 之類的 signal 而終止)
2. 另外會遇到的問題如上:
在 32bit 環境下的 linux 可以成功編譯, 「大致」功能正常
但同樣會遇到閱讀紀錄會一直reset的問題(新文章回覆顯示未讀)
若在站內發表完新文章或系統發了新文章後,
部分看板人氣會一直呈現 評:╳ 人氣:-15874 這樣子的情況
目前對於這個問題還在亂摸索中...沒什麼頭緒ˊˋ
目前利用工作站 bbs 帳號裡 ipcs 查詢到的資訊:
bbs@debian:$ ipcs
------ Message Queues --------
key msqid owner perms used-bytes messages
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x000007ce 0 bbs 600 508456 2
0x00000bb5 32769 bbs 600 958480 2
0x00000bb7 98306 bbs 600 111328 2
------ Semaphore Arrays --------
key semid owner perms nsems
只是在想要調整的是Makefile裡的編譯參數嗎?
或是 include/config.h 裡的相關定義
甚至要把裡面其他的程式碼抓出來改?
還是可透過ipcs/ipcrm shm調校share memory來改善?
目前能想到的就只有這些...orz
不知有沒有好心指點的前輩路過
或是其他現在也仍適合討論請益maple-itoc相關的地方QQ
(目前找到留下最多資料的就: telnet://cpu.tfcis.org 了
其他以m3-itoc為基礎架的站也有一些轉信過去的資料)
--
你知道PTT有小天使嗎? 祂能幫助你唷! 小主人我來了^Q^ -
◥ ●β
、HELP 想呼叫屬於你的小天使嗎? /◥=
` 〈○〉 ▃▃▃ 只要按hh,就可以了唷!! Δ
新 ◥ >_<~
// ▅▅▅ 快按下"hh"呼叫你的小天使吧!\(≧▽ν≦)ωgarnier
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.101.29
※ 文章網址: https://www.ptt.cc/bbs/Maple/M.1497936402.A.60C.html
→ lantw44: 剛看了一下你寫的安裝步驟,有設定好讓 06/20 21:11
→ lantw44: camera 和 account 開機自動執行嗎? 06/20 21:11
→ holishing: 有新增 /etc/rc.local 寫進去, 並用 chmod +x 讓他可 06/20 21:16
→ holishing: 執行這樣orz 06/20 21:16
→ holishing: 不過上一篇沒記到... (有放進github自己改的記錄裡 06/20 21:18
然後目前情況結果是剛開機時自己從虛擬機外 telnet 回去時,
會先出現一段時間的黑畫面, 過了好一陣子才出現了沒有進站圖案的空白登入畫面
http://i.imgur.com/khMiEMG.png
有嘗試過 xinetd 或 standalone 差不多都遇到類似情形
以下是去 /var/log/daemon.log 翻到的資料:
(後面兩行可能是12點執行備份時才會出現的@@)
> --------
Jun 21 00:28:53 debian rc.local[310]: [account]#011CACHE#011reload bcache
Jun 21 00:28:53 debian rc.local[310]: sh: 1: /usr/bin/gzip: not found
Jun 21 00:28:53 debian rc.local[310]: grep: run/bmta.log: No such file or directory
> --------
(之前會以為設/etc/rc.local有用是因為
架pttbbs時也是用此法讓他自己跑起來的orz)
最後登進去站長選單按了系統重整
或是回去工作站重新執行 camera 和 account
或是等crontab自己重新跑那兩個程式才有效果
一直到有以下情形前系統運作大致都算正常的
但到之後在系統或使用者於「看板」內發表新文章後
或是板主小d掉某篇文章跑到 deleted 板後
使用者就會開始有未讀記錄, 然後再麼read多次使它已讀,
進出看板後, 記錄(.BRH)還是會重設, 甚至直接斷線
→ lantw44: 於是整個 bbs 關掉 (killall bbsd / ipcrm ...) 06/20 21:31
→ lantw44: 再重開還是有這個狀況嗎? 06/20 21:31
→ lantw44: 斷線感覺是 bbs 程式當掉了…… dmesg 有沒有相關訊息? 06/20 21:52
→ lantw44: 例如 segfault 或 general protection 之類的 06/20 21:53
目前只翻到這些 O.O
[ 3072.842793] mmap: bbsd (452): VmData 1804693504 exceed data ulimit 16777216. Update limits or use boot option ignore_rlimit_data.
[ 814.920385] mmap: bbsd (431): VmData 1804935168 exceed data ulimit 16777216. Update limits or use boot option ignore_rlimit_data.
[ 325.972325] mmap: bbsd (377): VmData 1805119488 exceed data ulimit 16777216. Update limits or use boot option ignore_rlimit_data.
→ holishing: (有先試了ipcs/ipcrm) 先筆記一下@@ 周末有空好好測試 06/20 23:25
先補上開機自動執行時的log..
ipcs後顯示的訊息
※ 編輯: holishing (140.116.101.29), 06/24/2017 00:45:30
本來覺得問題在 ~/usr/[字母開頭]/[使用者]/.BRH 底下
可是發現在存閱讀記錄到該處前就已經有問題了 (可能是記憶體那邊!?)
※ 編輯: holishing (140.116.101.29), 06/24/2017 23:01:21
補上三條不同次開機的 dmesg 訊息
※ 編輯: holishing (140.116.101.29), 06/25/2017 13:12:26
→ lantw44: 我覺得可以考慮用 gdb 看看能不能拿到 backtrace 了 06/28 21:06
→ lantw44: 在這之前要先把 Makefile 裡的 -s 拿掉再加上 -g 重編 06/28 21:07
→ lantw44: 剛才搜尋了一下 RLIMIT_DATA,在 maple/bbsd.c 找到這段 06/28 21:17
→ lantw44: /* adjust resource : 16 mega is enough */ 06/28 21:18
→ lantw44: limit.rlim_cur = limit.rlim_max = 16 * 1024 * 1024; 06/28 21:18
→ lantw44: setrlimit(RLIMIT_DATA, &limit); 06/28 21:18
→ lantw44: 有沒有考慮把這行 setrlimit 註解掉…… 06/28 21:19
→ lantw44: 把記憶體用量限制在 16 MiB 感覺似乎很少? 06/28 21:19
→ holishing: 先記一下, 找時間來試 ψ(._. )> 06/29 01:27
→ holishing: 從config.h那邊把那部分undef掉目前狀況還是差不多@@ 07/03 16:54
→ holishing: 再研究其他原因@@ 07/03 16:54
→ holishing: 直接註解掉那行的結果也一樣 07/04 13:07
→ holishing: gdb和Makefile參數還沒試過,找機會試 07/09 14:59
※ 編輯: holishing (140.116.101.37), 07/16/2017 01:16:40
gdb 目前找到的 log:
> ps. 用 "gdb attach <程式的PID> -ex cont" 去記下來的
> 參考:
> https://stackoverflow.com/questions/9746018/gdb-attach-to-a-process-without-stop
這是申請 sysop 後正常登出後留下的記錄:
https://gist.github.com/holishing/9fbbccfa8d297f635715e4d71e5bda42
這是開新版後進入 (B)oards 後斷線留下的記錄:
https://gist.github.com/holishing/60f1285473101c27ffd585c68db689bf
這是先前測試在 0Announce 板發文並開完新板後, 下次進站看完公告後跳出後
再從 (B)oards 進去 0Announce 板(在看板列表那時未讀燈沒亮)
再從 0Announce 板準備左鍵出板結果就斷線了:
https://gist.github.com/holishing/f3cf771ea99ff30b1a848d90222c8ce7
之後進站要進去(B)然後斷線:
https://gist.github.com/holishing/702e76b7ebd7b2b31793c54f1f8b29c8
這一波最後一次測試
在 0Announce 砍掉重發一次公告後
下次進站讀完公告後回主選單
然後從 (B) 進去 0Announce (那時人氣顯示: -15860) 準備再出來時, 斷線:
https://gist.github.com/holishing/8e6e08873eb05be184a8c4ecfd59e762
之後的log應該會另回新文放@@, 然後上面的沒放到 backtrace orz
→ holishing: 這次先試到這邊, 本來一開始在test發完文後, 重複進出 07/16 05:14
→ holishing: 該板也會造成類似斷線情形, 但完整的log沒記到 orz 07/16 05:15
→ holishing: 不對, 之後應該放在gist上@@rz 07/16 05:16
像是這樣: (這個有在一些點下 backtrace 指令)
https://gist.github.com/holishing/7a5f1e3a3b1d4ff3b48fe147d0ef9e27
→ holishing: 擇期再研究 (? 07/16 05:49
先整理一下前面的log @@
https://github.com/holishing/maplebbs-itoc/tree/gdb-test/doc/debuglog
※ 編輯: holishing (140.116.101.37), 07/21/2017 03:51:52
→ holishing: 或是另外找 CentOS 試試... 07/22 18:16
結果在 CentOS 7 (AltArch) 完全沒這個問題.........orz
這是逼自己不能只待在 Debian 嗎.....orz
不知道是不是 gcc 版本差異的問題還是.... (希望有天能知道答案qq
※ 編輯: holishing (140.116.101.37), 07/24/2017 12:46:17
推 xeonchen: cpu 是用 chroot 到 x86 的 toolchain 來 build 06/16 06:52
推 pichubaby: 幫忙補個延伸閱讀 01/01 17:40
→ pichubaby: BoardReadingHistory-zh_tw 01/01 17:40