Вылетает ошибка "mremap_chunk(): invalid pointer Aborted" Python

Я реализовываю не сложного телеграмм бота (Python, telegrambotapi), который высчитывает матрицу человека или что-то вроде того (сам особо не вникал в эту тему, просто знаю алгоритм).

И при совершенно случайных обстоятельствах вылетает следующая ошибка ("mremap_chunk(): invalid pointer Aborted"). Я искал ответ на вопрос на просторах интернета, но ситуации у людей были совершенно иными и я не мог их переложить под мой код. Я настолько отчаялся, что, вот впервые, решил написать сюда.

В чем суть данного алгоритма

  1. (В это функции вроде все работает окей) В первой функции в качестве аргумента выступает дата рождения в формате день, месяц, год при этом число может быть введено разными способами, например 18-10-1999 или 23/02/2022 или 21.02.2001. Думаю понятно. Также месяц может быть введен в формате текста, тогда он должен будет измениться в число. Ф-ция возвращает переменную dir которая имеет следующие коды:
  • 1 - все ок
  • 3 - некорректный ввод числа
  • 4 - некорректный ввод года
  • 5 - некорректный ввод месяца
  1. (Вот тут я думаю таится корень зла) Эта функция считает 4 доп числа
  • 1 - это сумма всех цифр даты рождения
  • 2 - это сумма всех цифр 1 доп. числа
  • 3 - разность первого доп. числа и удвоенной первой цифры даты рождения
  • 4 - это сумма всех цифр 3 доп. числа

Далее происходит подсчет каждой ячейки (s1 - 1 ячейка, s2 - 2 ячейка и т.д до 9) Первая ячейка это все единицы из даты рождения и доп чисел.

Так например для 17.10.2000 первая ячейка = 1111 так как в дате рождения 2 единицы и в доп. числах (11, 2, 9, 9) тоже 2 единицы

Для второй и остальных ячеек до 9 аналогичная ситуация

Другие ячейки там видно что это сумма количества цифр по вертикали, горизонтали и по диагонали

Вот скрин одной из таблиц посчитанных данным алгоритмом (зеленые линии (s10 - s12) (вертикаль), желтые линии (s13 - s15) (горизонталь), фиолетовые линии (s16 - s17) (горизонталь)) одна из таблиц посчитанная данным алгоритмом

Надеюсь алгоритм понятно объяснил, если что, заранее простите и я готов ответить на все вопросы

Также я ниже предоставлю код скрипта генерирующего изображение, видел что это ошибка и при работе с Pillow возникала, вдруг там мой косяк.

Вот сам код (знаю, выглядит очень некрасиво, сам себя за это ругаю, но я спешил)

calc.py - алгоритм расчета матрицы

import re
import pic_generate
def check_date(date):
    day = re.split("[;|,|.|\n|_|-| |/|-]", date)
    try:
        int(day[0])
    except:
        return 3, 1

    try:
        int(day[2])
    except:
        return 4, 1

    if day[1].lower() == 'января':
        day[1] = 1
        return 0, day
    elif day[1].lower() == 'февраля':
        day[1] = 2
        return 0, day
    elif day[1].lower() == 'марта':
        day[1] = 3
        return 0, day
    elif day[1].lower() == 'апреля':
        day[1] = 4
        return 0, day
    elif day[1].lower() == 'мая':
        day[1] = 5
        return 0, day
    elif day[1].lower() == 'июня':
        day[1] = 6
        return 0, day
    elif day[1].lower() == 'июля':
        day[1] = 7
        return 0, day
    elif day[1].lower() == 'августа':
        day[1] = 8
        return 0, day
    elif day[1].lower() == 'сентября':
        day[1] = 9
        return 0, day
    elif day[1].lower() == 'октября':
        day[1] = 10
        return 0, day
    elif day[1].lower() == 'ноября':
        day[1] = 11
        return 0, day
    elif day[1].lower() == 'декабря':
        day[1] = 12
        return 0, day
    else:
        try:
            int(day[1])
            return 0, day
        except:
            return 5, 1

def calc(date):
    firstDopNum = sum(map(int, str(
        date[1]))) + sum(map(int, str(date[0]))) + sum(map(int, str(date[2])))
    secondDopNum = sum(map(int, str(firstDopNum)))
    thirdDopNum = firstDopNum - (int(str(int(date[0]))[0])*2)
    fourthDopNum = sum(map(int, str(thirdDopNum)))
    allNum = str(date[2]) + str(date[1]) + str(date[0]) + \
        str(firstDopNum) + str(secondDopNum) + \
        str(thirdDopNum) + str(fourthDopNum)
    s1 = re.sub("[2|3|4|5|6|7|8|9|0]", "", allNum)
    s2 = re.sub("[1|3|4|5|6|7|8|9|0]", "", allNum)
    s3 = re.sub("[2|1|4|5|6|7|8|9|0]", "", allNum)
    s4 = re.sub("[2|3|1|5|6|7|8|9|0]", "", allNum)
    s5 = re.sub("[2|3|4|1|6|7|8|9|0]", "", allNum)
    s6 = re.sub("[2|3|4|5|1|7|8|9|0]", "", allNum)
    s7 = re.sub("[2|3|4|5|6|1|8|9|0]", "", allNum)
    s8 = re.sub("[2|3|4|5|6|7|1|9|0]", "", allNum)
    s9 = re.sub("[2|3|4|5|6|7|8|1|0]", "", allNum)
    s10 = int(len(s1)) + int(len(s2)) + int(len(s3))
    s11 = int(len(s4)) + int(len(s5)) + int(len(s6))
    s12 = int(len(s7)) + int(len(s8)) + int(len(s9))

    s13 = int(len(s1)) + int(len(s4)) + int(len(s7))
    s14 = int(len(s2)) + int(len(s5)) + int(len(s8))
    s15 = int(len(s3)) + int(len(s6)) + int(len(s9))

    s16 = int(len(s1)) + int(len(s5)) + int(len(s9))
    s17 = int(len(s3)) + int(len(s5)) + int(len(s7))
    varList = [s1, s2, s3, s4, s5, s6, s7, s8, s9,
               s10, s11, s12, s13, s14, s15, s16, s17, firstDopNum, secondDopNum, thirdDopNum, fourthDopNum]

    for i in range(0, len(varList)):
        if varList[i] == '':
            varList[i] = 'Пусто'
        elif varList[i] == 0:
            varList[i] = 'Пусто'

    sudba = int(firstDopNum)
    while True:
        if sudba == 11 or sudba == 22:
            break
        elif len(str(sudba)) >= 2:
            sudba = int(str(sudba)[0]) + int(str(sudba)[1])
        elif len(str(sudba)) == 1:
            break

    varList.append(sudba)
    pic_generate.create_img(varList)
    return varList

отрывок main.py - работа с ботом

@bot.message_handler(commands=['calc'])
def begin_calc(message):
    user = config.MessageList(message.from_user.username,
                              message.from_user.first_name, message.from_user.last_name)
    msg = bot.send_message(message.chat.id, user.info_message(
        'begin_calc_msg'), reply_markup=keyboards.calcKB_1, parse_mode="Markdown")
    bot.register_next_step_handler(msg, birthday_calc)

def birthday_calc(message):
    date = message.text
    dr, res = calc_matrica.check_date(date)
    if dr == 3:
        bot.send_message(message.chat.id, '❌ Вы некорректно ввели ваше число!')
        bot.delete_message(chat_id=message.chat.id,
                           message_id=message.message_id-1)
        begin_calc(message)

    elif dr == 4:
        bot.send_message(
            message.chat.id, '❌ Вы некорректно ввели год рождения!')
        bot.delete_message(chat_id=message.chat.id,
                           message_id=message.message_id-1)
        begin_calc(message)

    elif dr == 5:
        bot.send_message(message.chat.id, 'Вы некорректно ввели месяц рождения!')
        bot.delete_message(chat_id=message.chat.id,
                           message_id=message.message_id-1)
        begin_calc(message)

    elif dr == 0:
        bot.send_message(message.chat.id, f'Ваша дата рождения: {res[0]}.{res[1]}.{res[2]}\n\nЗагружаю матрицу...')
        print(res)
        data = calc_matrica.calc(res)
        bot.send_photo(message.chat.id, open('matrica.png', 'rb'),
                    reply_markup=keyboards.calcKB_2)
bot.polling()

pic_generate.py - создание изображения

from PIL import Image, ImageDraw, ImageFont

def create_img(res):
      im = Image.open('shabl.png')
      print(res)
      font = ImageFont.truetype("OpenSans-Light.ttf", 25)
      drawer = ImageDraw.Draw(im)

      drawer.text((50,10), f'Доп. числа: {res[17]} {res[18]} {res[19]} {res[20]}', font=font, fill='black', align='center')
      drawer.text((531, 10), 'Темперамент', font=font, fill='black', align='center')
      drawer.text((50, 45), 'Число судьбы: ' +str(res[21]), font=font, fill='black', align='center')
      drawer.text((531, 50), str(res[16]), font=font, fill='black', align='center')

      drawer.text((50,90), 'Характер', font=font, fill='black', align='center')
      drawer.text((237, 90), 'Здоровье', font=font, fill='black', align='center')
      drawer.text((394, 90), 'Удача', font=font, fill='black', align='center')
      drawer.text((50,130), str(res[0]), font=font, fill='black', align='center')
      drawer.text((237, 130), str(res[3]), font=font, fill='black', align='center')
      drawer.text((394, 130), str(res[6]), font=font, fill='black', align='center')
      drawer.text((531, 90), 'Цель', font=font, fill='black', align='center')
      drawer.text((531,130), str(res[9]), font=font, fill='black', align='center')

      drawer.text((50,170), 'Энергия', font=font, fill='black', align='center')
      drawer.text((237, 170), 'Логика', font=font, fill='black', align='center')
      drawer.text((394, 170), 'Долг', font=font, fill='black', align='center')
      drawer.text((50,210), str(res[1]), font=font, fill='black', align='center')
      drawer.text((237, 210), str(res[4]), font=font, fill='black', align='center')
      drawer.text((394, 210), str(res[7]), font=font, fill='black', align='center')
      drawer.text((531, 170), 'Семья', font=font, fill='black', align='center')
      drawer.text((531,210), str(res[10]), font=font, fill='black', align='center')


      drawer.text((50,250), 'Интерес', font=font, fill='black', align='center')
      drawer.text((237, 250), 'Труд', font=font, fill='black', align='center')
      drawer.text((394, 250), 'Память', font=font, fill='black', align='center')
      drawer.text((50,290), str(res[2]), font=font, fill='black', align='center')
      drawer.text((237, 290), str(res[5]), font=font, fill='black', align='center')
      drawer.text((394, 290), str(res[8]), font=font, fill='black', align='center')
      drawer.text((531, 250), 'Привычки', font=font, fill='black', align='center')
      drawer.text((531,290), str(res[11]), font=font, fill='black', align='center')


      drawer.text((50,330), 'Самооценка', font=font, fill='black', align='center')
      drawer.text((237, 330), 'Быт', font=font, fill='black', align='center')
      drawer.text((394, 330), 'Талант', font=font, fill='black', align='center')
      drawer.text((50,370), str(res[12]), font=font, fill='black', align='center')
      drawer.text((237, 370), str(res[13]), font=font, fill='black', align='center')
      drawer.text((394, 370), str(res[14]), font=font, fill='black', align='center')
      drawer.text((531, 330), 'Духовность', font=font, fill='black', align='center')
      drawer.text((531,370), str(res[15]), font=font, fill='black', align='center')
      im.save('matrica.png')

Сама ошибка

mremap_chunk(): invalid pointer                                                                                                                                                                              
Aborted

Даже строки где ошибка не пишет (((((

Доп инфа

  • библиотека генерации изображения - Pillow
  • библиотека для работы с ботом - telegrambotAPI
  • библиотека re - для работы со строкой
  • разворачиваю все на хосте - pythonanywhere

Заранее всем спасибо за помощь!


Ответы (0 шт):