Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
А реально ли найти ошибку глядя на this CXX0017: Error: simbol this not found
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, >поставь synchronousOnRelease в true Откуда такая уверенность и в каком месте предлагаешь это сделать? Но боюсь такой подход породит другие проблемы в самом неожиданном месте. Или какой-то другой объект будет порушен раньше времени. М.б. все-таки проверить объект "на вменяемость" перед выполнением действа дающее краш? Чем моя идея плоха? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2013, 23:55 |
|
||
|
А реально ли найти ошибку глядя на this CXX0017: Error: simbol this not found
|
|||
|---|---|---|---|
|
#18+
>поставь synchronousOnRelease в true нельзя так делать. это с факсом связано: тел. соединения уже нет, а факс чего-то там пытается, а статистику отдает чуть позже. факс в Opal это плагин и его нельзя так просто взять и грохнуть по окончании вызова, а synchronousOnRelease это дело как-то контролирует. надо все-таки ловить исключение/проверять вменяемость. Но не получается у меня. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. Вот как мне проверить что phase это не CXX0030 Error: expession can not be evaluated? Но там не 0, при этом. Скорее Nothing. Или как проверить phaseMutex не состоит из CXX0030 Error: expession can not be evaluated? Как понять что *this еще жив? Вообще то ситуация странная, ибо this - это объект OpalConnection и вызывается его же ф-ция OpalConnection ::SetPhase Я всего-то хочу Код: plaintext 1. 2. 3. 4. 5. 6. ну или Код: plaintext 1. 2. 3. 4. 5. 6. Проконтролировать код на предмет чтоб такой ситуации не было мне не по зубам (я на это и не претендую). Поэтому единственный вариант - заморозить и выкинуть поток, но при этом чтоб он не рванул приложение. Если задница, значит данный Connection уже не нужен, а полужив он только потому что из-под него запущена эта задница. Это неправильно конечно, но боюсь самый безобидный вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2013, 00:59 |
|
||
|
А реально ли найти ошибку глядя на this CXX0017: Error: simbol this not found
|
|||
|---|---|---|---|
|
#18+
Дмитрий77М.б. все-таки проверить объект "на вменяемость" перед выполнением действа дающее краш? Чем моя идея плоха? Тем, что она неосуществима. В принципе невозможно в общем случае проверить указатель на валидность. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2013, 01:18 |
|
||
|
А реально ли найти ошибку глядя на this CXX0017: Error: simbol this not found
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Но вариантов то не много. Вот читаю (ответ #6) http://stackoverflow.com/questions/4595675/determining-whether-pointer-is-valid Подсунуть пустышку "#define DATA_MAGIC 0x12345678" в какой-то свой элемент при инициализации класса (OpalConnection) потом проверить равно ли значение пустышке? Если НЕТ, то задница. не? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2013, 01:28 |
|
||
|
А реально ли найти ошибку глядя на this CXX0017: Error: simbol this not found
|
|||
|---|---|---|---|
|
#18+
MasterZivДелай TRY/CATCH на самом верху логики работы. Ну вот только это и помогло: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Что интересно, чтоб вылетало больше одного раза я в логе не нашел. Хотя я не уверен что я убиваю поток через ExitThread(13); -лог это не показывает. И не уверен что это надо - заснул и черт с ним. Код: plaintext 1. 2. 3. 4. 5. За считанные доли милисекунды объект Connection превращается в гадкий пустой PObject. Почему -ХЗ. Автор Opal кстати ответил: Robert JongbloedAll I can suggest is that it is a dangling pointer issue. That is, there is an "OpalConnection *" that is still pointing at the connection object instance after it has been deleted. It should use a PSafePtr<OpalConnection> instead. I cannot be 100% certain, but I am very sure that there are none in OPAL itself, but I cannot say the same for the application. Но это мало что дает. Надеюсь моего "фикса" хватит и он не приведет к другим глобальным проблемам. Хотя, пока писал, прога отработала и проверил одну вещь. Есть проблема. Вызовов нет, показывает 59 линий свободно. Тестировал "60 линий", одна "сдохла". Значит не закрыл поток, и объект не убрался из коллекции Connection. А надо бы как то его добить. М.б. delete *this Не? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2013, 05:42 |
|
||
|
А реально ли найти ошибку глядя на this CXX0017: Error: simbol this not found
|
|||
|---|---|---|---|
|
#18+
Дмитрий77, РОдной, пойми ты наконец, "CXX0030 Error: expession can not be evaluated" — это ошибка ДЕБАГЕРА во время отладки, а не программы во время выполнения. Хотя и вызваны они одной причиной — неверным адресом в указателе — это разные вещи. Это тебе не бейсик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2013, 10:01 |
|
||
|
А реально ли найти ошибку глядя на this CXX0017: Error: simbol this not found
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovДмитрий77М.б. все-таки проверить объект "на вменяемость" перед выполнением действа дающее краш? Чем моя идея плоха? Тем, что она неосуществима. В принципе невозможно в общем случае проверить указатель на валидность. Ну, на самом деле можно иногда.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2013, 10:04 |
|
||
|
А реально ли найти ошибку глядя на this CXX0017: Error: simbol this not found
|
|||
|---|---|---|---|
|
#18+
Дмитрий77Dimitry Sibiryakov, Но вариантов то не много. Вот читаю (ответ #6) http://stackoverflow.com/questions/4595675/determining-whether-pointer-is-valid Подсунуть пустышку "#define DATA_MAGIC 0x12345678" в какой-то свой элемент при инициализации класса (OpalConnection) потом проверить равно ли значение пустышке? Если НЕТ, то задница. не? Эта пустышка — ноль, нулевой указатель. Только проблема в том, что возможно тебе недоступно место инициализации (если доступно, то надо несомненно ее добавить), и что возможно указатель затирается левым значением, которое неотличимо от нормального. Есть ещё функция IsValidHeapPointer, ее можно иногда применять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2013, 10:10 |
|
||
|
А реально ли найти ошибку глядя на this CXX0017: Error: simbol this not found
|
|||
|---|---|---|---|
|
#18+
MasterZivЭта пустышка — ноль, нулевой указатель. Это бесполезно. Да, попытался, запихивается в инициализацию класса. Пустышка (и любой другой способ) пройдет проверку "на вшивость", а при выполнение следующей строчки объект "бабахнет". Где бабахнет, там и вылетет, проверки не помогут. Поэтому единственный вариант - стеречь вылет в ЛЮБОМ месте. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. И ДА, это работает, наконец то! Поток кстати думаю (через задницу) но выходит, раз краш не вылазит в другом месте. Автор кстати еще написал: авторIf you are using the code I think you are that starts a thread using: void OpalFaxConnection::ReleaseConnection(PThread &, INT) { if (LockReadWrite()) { Release(OpalConnection::EndedByLocalUser); UnlockReadWrite(); } } So the conection is locked until the thread exits. And yet there is a: 2013/10/03 04:45:27.875 Opal Garbage:9080 OpalCon Connection Call[Ceeaac12f363]-EP<fax>[F7e8f253c364] destroyed. just before the crash where it is deleted. I would have said that was impossible as the connection is locked.. Т.е. пишет, не может такого быть. Заблокирован и баста, прорваться не возможно. А на деле очень даже возможно. Хотя он тут же добавил: авторMy only suggestion is to change the LockReadWrite to SafeReference() and UnlockReadWrite() to SafeDereference().. А в след. письме просто настаивает на этой замене. Вот я сейчас поменял и тестирую (защиту __except пока не снял, но логирование тоже не отключал). И что интересно пока в логе слов PTRACE(3,"Thread is closed!"); не вижу. Может и вылечилось по нормальному. Но, веселухи хватает. Стал получать Transport Error после большого к-ва звонков. Выяснил. После 1000 звонков RTP порты диапазон 5000-5999 тупо заканчиваются. Счас увеличил 5000-15000 чтоб не мешало тестированию. А попутно написал автору, с чего он им FREE не делает и где копать. P.S.Пока писал закончился тест 3000 вызовов на 60 линий за ~25 минут. И о чудо - я не вижу в логе записи о срабатывании моего исключения. 60 каналов на месте, CPU_Usage=0-2%, прога жива. Suggestion вроде правильный оказался, видимо SafeReference сильнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2013, 10:59 |
|
||
|
А реально ли найти ошибку глядя на this CXX0017: Error: simbol this not found
|
|||
|---|---|---|---|
|
#18+
Чайники часто думают, что код, стоящий после создания потока, выполняется после кода созданного потока. Они заблуждаются. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2013, 13:26 |
|
||
|
А реально ли найти ошибку глядя на this CXX0017: Error: simbol this not found
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Не знаю что там чайники думают, но я думаю что код выполняется параллельно (на то он и поток) и может вбабахать между строк основного кода. Собственно это и имело место быть (объект мог удалиться в любом месте выполнения ф-ции SetPhase). Слабое место был критерий locked -он мог не выполниться. Теперь видимо выполняется с гарантией. P.S. На VB6 телефонию нормально не напишешь. Как раз потому что с потоками там туго, не потому что язык тупой. PP.S А вот на VB.NET наверно вполне. PPP.S. Но мне честно хватает раскопок в имеющейся реализации, а основное время я лучше потрачу на "перделки и свистелки". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2013, 14:08 |
|
||
|
|

start [/forum/topic.php?fid=57&gotonew=1&tid=2019944]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
10ms |
get first new msg: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 175ms |

| 0 / 0 |
