Чертовщина с параметром

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Чертовщина с параметром

Сообщение Игорь Столяров »

Привет всем ! :)
Сейчас попробую описать то, чего не понимаю.

Среда: С11, у меня Win10, у клиента Win7.
Факты: Из Frame открывается MDI окно как поток и в него передаётся параметр Group как обычный String.
Всё было хорошо долгие лета, до того момент пока Size(Group) не вывалился за 1024 (сейчас 1055).

Дальше непонятно. У меня вообще проблем нет. Клиент эпизодически сообщает, что у него вываливается
ошибка связанная с тем, что параметр передаётся не полностью. Поставил на входе процедуры проверку
размера получаемого параметра - нет ошибок. Клиенту программу поставил - нет ошибок. Часа через два
он звонит и начинает рассказывать, что у него где-то 1 раз через 5 открытий окна появляется сообщение
"Ошибка параметра, размер 1024". Приезжаю, 20 раз открываю окно - нет ошибок, уезжаю - звонки повторяются … :(

Ничего не понимаю ! Что это вообще может быть такое ? :(
Может что-то извне влиять на размер стека приложения ?
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Чертовщина с параметром

Сообщение kreator »

Понятно, что в хелпе насчёт этого ничего. Поэкспериментируйте с размером стека. В хелпе - 35000. Я пользую значение по умолчанию (25000). Есть ещё возможность разбить на три "строки". Но наверняка дополнительные две уже заняты :) .
We are hard at work… for you. :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Чертовщина с параметром

Сообщение finsoftrz »

Я передаю параметры между тредами через глобальную очередь. Она одна для всего. Работа с ней через специальные функции, в которых запись и чтение семафорятся. Сверху кодовые шаблоны. Передавать можно как обычные параметры, так и списковые. Есть еще аналогичный механизм для передачи параметров внутри треда, но он используется редко.
C6/C11, ШВС, tps/btrieve.
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Чертовщина с параметром

Сообщение Yufil »

kreator писал(а): 05 Декабрь 2019, 10:57 Понятно, что в хелпе насчёт этого ничего. Поэкспериментируйте с размером стека. В хелпе - 35000. Я пользую значение по умолчанию (25000). Есть ещё возможность разбить на три "строки". Но наверняка дополнительные две уже заняты :) .
Когда-то в прошлом тысячелетии обсуждалась похожая проблема.
Можно попробовать в качестве параметра передавать в строковом поле адрес группы ( Start( MyThread,25000,Address(MyGroup) & '') , а не саму группу, а уже внутри треда скопировать группу с указанным адресом в локальную переменную

Не помню, чем кончилось - OK или GPF

Код: Выделить всё

MyThread Procedure( String MyStartAddr ) 
! CopyMemory Procedure(Ulong Dest,Ulong Src,Ulong Size),Name('_memmove')
Myaddr         ULONG 
.... 
myAddr  = MyStartAddr 
.... 
СopyMemory(  address( LocalGroup ), MyAddr, Len( LocalGroup )) 
... 
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

Чертовщина с параметром

Сообщение vic7tar »

Игорь Столяров писал(а): 04 Декабрь 2019, 21:43...появляется сообщение
"Ошибка параметра, размер 1024..."
А кто (или что) выдаёт такое сообщение?
C10, Win10x64
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Чертовщина с параметром

Сообщение kreator »

vic7tar писал(а): 05 Декабрь 2019, 17:08
Игорь Столяров писал(а): 04 Декабрь 2019, 21:43...появляется сообщение
"Ошибка параметра, размер 1024..."
А кто (или что) выдаёт такое сообщение?
Разработчик, очевидно.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Чертовщина с параметром

Сообщение Игорь Столяров »

kreator писал(а): 05 Декабрь 2019, 17:16А кто (или что) выдаёт такое сообщение?
Да, это моё отладочное сообщение если в процедуру попадает строка-параметр размером меньше, чем Size(MyGroup).
Кстати там ещё один прикол: если запускать под терминальным сервером, то проблема становиться прям настойчивой … ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

Чертовщина с параметром

Сообщение vic7tar »

kreator писал(а): 05 Декабрь 2019, 17:16Разработчик, очевидно.
А может такое быть, что разработчик в схеме преобразований группа->строка->группа допустил неточность?
C10, Win10x64
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Чертовщина с параметром

Сообщение Игорь Столяров »

vic7tar писал(а): 05 Декабрь 2019, 18:40разработчик в схеме преобразований группа->строка->группа допустил неточность
Да нет там никаких преобразований.

Код: Выделить всё

! -- Вызов
Loc:MyGroup  Group(TypeGroup).
  Code
  ...
  Start(Browse_Bablo,25000,Loc:MyGroup)
  
!--- Получаем
Bablo Procedure(String xParam_)
Loc:MyGroup  Group(TypeGroup).
  Code
  Loc:MyGroup  = xParam_
  ...
Я бы сказал, что ситуация в какой-то момент начинает развиваться непредсказуемо и выходит из под контроля.
Напрямую я в память не лезу, здесь нет никаких манипуляций с адресами процедур и данных …
Непонятно, но я не сдаюсь. Треугольник будет выпит, будь он хоть параллелепипед ! :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

Чертовщина с параметром

Сообщение vic7tar »

Определение TypeGroup можно посмотреть?
C10, Win10x64
Amike34
Бывалый
Сообщения: 51
Зарегистрирован: 03 Август 2005, 19:06
Откуда: г. Чебоксары

Чертовщина с параметром

Сообщение Amike34 »

Игорь Столяров писал(а): 05 Декабрь 2019, 19:12! -- Вызов
Loc:MyGroup Group(TypeGroup).
Code
...
Start(Browse_Bablo,25000,Loc:MyGroup)

!--- Получаем
Bablo Procedure(String xParam_)
Loc:MyGroup Group(TypeGroup).
Code
Loc:MyGroup = xParam_
...

Может быть попробовать:
Loc:MyGroup :=: xParam_
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Чертовщина с параметром

Сообщение Игорь Столяров »

Amike34 писал(а): 06 Декабрь 2019, 10:23Может быть попробовать:
Loc:MyGroup :=: xParam_
Спасибо, пробовал.
Но сожалению, уже на входе процедуры мерцает проблема Size(xParam_) <> Size(Loc:MyGroup).
И как следствие, присваиванием по полям проблему не решить.

Тут что-то напрямую связанное с названием темы. Вроде бы отловил один косяк - сейчас тестируется.
Если всё будет OK - непременно доложу о результате, и это будет неожиданный поворот событий. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Constantine
Активист
Сообщения: 185
Зарегистрирован: 07 Февраль 2017, 16:58

Чертовщина с параметром

Сообщение Constantine »

А если так?
Loc:MyGroup Group(TypeGroup),STATIC.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Чертовщина с параметром

Сообщение Игорь Столяров »

Constantine писал(а): 06 Декабрь 2019, 10:42Loc:MyGroup Group(TypeGroup),STATIC.
Ну это уже танцы с бубном. :)
Так или иначе при вызове процедуры параметры записываются в стек, независимо от места объявления параметра.
И после вызова процедуры, что-то эпизодически сбивает этот процесс обмена данными.
За теми кто отстал - не возвращаться. (С) Кодекс
Constantine
Активист
Сообщения: 185
Зарегистрирован: 07 Февраль 2017, 16:58

Чертовщина с параметром

Сообщение Constantine »

Ну, мое дело - предложить... :-)
Ответить