Jump to content
Korean Random

[Решено] Самопроизвольный краш клиента при отладке пида


Recommended Posts

При работе пида клиент самопроизвольно крашится.

 

референсов на PyObject в коде практически нет, просто отлаживаю с помощью PySys_WriteStdout() функцию по преобразованию строки в структуру.

 

Иногда успевает завершиться код, иногда нет. Даже если он достигает return Py_None, клиент 100% крашится.

В коде часто используются memset/memcpy, хотя не думаю, что они на что-то влияют.

Edited by Pavel3333
Link to comment
Short link
Share on other sites

Собственно, а что мешает воткнуться в клиент той же самой Visual Studio/WinDbg/IDA и посмотреть где конкретно падает?

Edited by Mixaill
Link to comment
Short link
Share on other sites

@Mixaill пробовал присоединиться к процессу танков. Не смог. Писало что-то вроде "не поддерживается".

 

Сейчас не за компом, последнее что успел выяснить - крашится даже пустая функция с макросом Py_RETURN_NONE.

PS. В VS установлена поддержка Питона. Завтра попробую поплясать с бубном на тему отладки танкового клиента.

Link to comment
Short link
Share on other sites

 Тогда это очень похоже на сборку не тем и не в том режиме. Чтобы работало без проблем, необходимо билдить свою библиотеку

- в Microsoft Visual Studio 2015 / 2017

- в конфигурации Release

Link to comment
Short link
Share on other sites

@Mixaill компилю в VS 2017 Community последнего обновления, конфигурация релизная. Очень похоже на неправильные свойства проекта, ибо еще вчера я работал на другом компьютере, притом все работало стабильно, а сегодня работаю уже на другом компьютере, синхронизировавшись с репозиторием. Может быть, синхронизация с репозиторием не затронула файлов решения, и из-за этого были старые параметры проекта.

 

Спасибо за совет, буду разбираться завтра.

Link to comment
Short link
Share on other sites

@Mixaill ситуация та же.

#include "stdafx.h"

#include "API_functions.h"
#include "python27/Python.h"


#define Py_BUILD_CORE 1
#define CONSOLE_VER1

PyObject* trj_get_models(PyObject* self, PyObject* args) {

	Py_INCREF(Py_None);
	return Py_None;
}

static struct PyMethodDef trj_methods[] =
{
	{ "get_models", trj_get_models, METH_VARARGS, "get_models" },
	{ NULL, NULL, 0, NULL}
};

PyDoc_STRVAR(trj_methods__doc__,
	"Trajectory Mod module"
);

PyMODINIT_FUNC inittrj(void)
{
	Py_InitModule4("trj",
		trj_methods,
		trj_methods__doc__,
		(PyObject*)NULL,
		PYTHON_API_VERSION);
};

Компилирую в VS 17, конфигурация Release. Вызываю в питоне без хука, при загрузке игры:

 

print '[TrajectoryMod]: loading module...'
trj_path = PATH.XFWLOADER_PACKAGES_REALFS+'/TrajectoryMod/native/trj.pyd'
trj = imp.load_dynamic('trj', trj_path)
print '[TrajectoryMod]: loading module OK'

print trj.get_models()

Краш.

Link to comment
Short link
Share on other sites

2 hours ago, Pavel3333 said:

#define Py_BUILD_CORE 1

такое до инклудов писать надо

2 hours ago, Pavel3333 said:

Компилирую в VS 17, конфигурация Release. Вызываю в питоне без хука, при загрузке игры:

надо вызывать после того, как xfwnative инициализуется

  • Upvote 1
Link to comment
Short link
Share on other sites

14 часов назад, SkepticalFox сказал:

надо вызывать после того, как xfwnative инициализуется

все верно. похоже, вылеты были по этой причине. не успевали дозагрузиться com.modxvm.xfw.mutex, com.modxvm.xfw.xinput, com.modxvm.xfw.console. отложеный запуск функции с задержкой 3 секунды исправил ситуацию.

Link to comment
Short link
Share on other sites

@Mixaill в xfw_package.json прописано:

{
    "id": "pavel3333.TrajectoryMod",
    "name": "TrajectoryMod",
    "description": "TrajectoryMod",

    "version": "4.0.0.1",
    "dependencies": ["com.modxvm.xfw.native"],
    "features": ["python", "native"],

    "url": "http://pavel3333.ru/trajectorymod/",
    "url_update": "http://pavel3333.ru/trajectorymod/",
    
    "wot_versions"         : [],
    "wot_versions_strategy": "allow_newer"
}

 

Link to comment
Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...