169 похожих чатов

Подскажите, а как можно отследить зацикливания в программе? Есть древний (на

stack LTS-8.5) проект, он использует Servant. Пытаюсь обновить до 17.9, уже почти удалось, но вот возникла проблема, посылаю POST-запрос, программа начинает потихоньку выжирать всю память и падает.

Запрос:
curl 'http://localhost:3003/api/private/itinerary/77' -H 'Content-Type: application/json' --data-raw '{"plan_id":270031,"country":"belize"}' --verbose

Насколько я понимаю, должно прийти в этот Endpoint:

type UpdateById = Capture "id" ItineraryId :> PostWithValidation Itinerary Itinerary

updateById :: AppSessionServer UpdateById
updateById id Itinerary{..} = do
liftIO $ putStrLn ("~~~~~~~ updateById ~~~~~~~~~~~~~~~" :: P.String)
runExceptT $ doDb $ do
suid <- requireLoggedInUser
requireAuth (hasCountryRole Reservations itineraryCountry)
pgUpdate id [ ItineraryTrip_name =. itineraryTrip_name
, ItineraryLast_user_id =. Just suid
]
newRec <- pgGet404 id
pure newRec

Но вот до putStrLn дело вообще не доходит.

Если послать кривой запрос, напр., --data-raw '{"plan_id":270031}' (`country обязательно поле) то сервер отвечает ошибкой. Если запустить stack ghci и там сделать JSON.decode "{\"plan_id\":270031,\"country\":\"belize\"} :: Itinerary -- то распарсивает. Поэтому я делаю вывод, что хотя бы парсинг работает корректно.

Но что тогда зависает и выжирает всю память? Как это можно найти? Можно ли как-то получить стектрейсы всех потоков, например? Это бы облегчило дело.

Какая вообще тактика поиска зависаний Servant?

2 ответов

13 просмотров

стэктрэйсы включаются ключом RTS -xc в режиме профилирования

toroboque- Автор вопроса
Cheese Syrowiecki
стэктрэйсы включаются ключом RTS -xc в режиме проф...

Да, при падении всё-таки вывелся стек-трейс. Спасибо! Попробую с этим разобраться...

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта