Взамидействие_потоков

Discussion in 'WASM.WIN32' started by AlexCab, Jun 20, 2009.

  1. AlexCab

    AlexCab New Member

    Blog Posts:
    0
    В общем такая ситуация, программа загружает четыре dll, запускает в каждой из них по потоку, каждый поток создаёт
    главное окно и в нём edit, потоки опщаются с программой посредством сообщений,
    программа отпраляет двум потокам сообщение о завершении, потоки уничтожают окна и завершаются, но как только какой-то
    из оставшихся потоков получает какое либо сообщение всё наглухо виснет, хотя если закрыть предварительно окна в ручную
    ничего подобного не происходит.
    Как изловть жука?
     
  2. Sol_Ksacap

    Sol_Ksacap Миша

    Blog Posts:
    0
    Необходимость видеть код.
     
  3. AlexCab

    AlexCab New Member

    Blog Posts:
    0
    Код в архиве (хотя сомневаюсь что поможет:)
    Оба потока почти одновременно вызывают DestroyWindow возможен ли сбой из-за этого?
     
  4. Sol_Ksacap

    Sol_Ksacap Миша

    Blog Posts:
    0
    Очень милый исходник.
    Один может попробовать вычленить минимальный код, приводящий к багу. После этого, если всё не встанет на свои места, можно перевести в псевдокод и запостить здесь функции из длл: основную функцию потока, функцию, крутящую цикл GetMessage\DispatchMessage и функцию обработки сообщений. Скорее всего вызов DestroyWindow не к месту хотя.

    ...
    Code (Text):
    1. АСМ Кнц_фнкч_окн Г (Буф_сбщ,Флг_дст)
    2.         (
    3.         \\Проверка сообщения выхода
    4.         mov ecx,Буф_сбщ
    5.         mov eax,[ecx + 4h]
    6.         cmp eax,0002h
    7.         je  Вых_фнк
    8.         \\Обработка сообщения по умолчанию
    9.         mov eax,[ecx + 0Ch]
    10.         push eax
    11.         mov eax,[ecx + 08h]
    12.         push eax
    13.         mov eax,[ecx + 04h]
    14.         push eax
    15.         mov eax,[ecx + 00h]
    16.         push eax
    17.         call [DefWindowProc]
    18.         Вых_фнк:
    19.         pop     edi esi ebx
    20.         pop ebp
    21.         \\Удаление парамтров из стека
    22.         pop ebx
    23.         add esp,10ш
    24.         push ebx
    25.         xor ebx,ebx
    26.         \\Выход
    27.         ret
    Умываем руки. Удачного поиска ;)
     
  5. AlexCab

    AlexCab New Member

    Blog Posts:
    0
    Если не создавть окон всё работает, что-то происходит при создании или разрушении окна, программа или виснет полностью (все потоки) или вылетае без всякого сообщения. Если у кого есть пример кода (создание окна потоком) поделитесь, буду очень благодарен:)
     
  6. wasm_test

    wasm_test wasm test user

    Blog Posts:
    0
    AlexCab
    оффтоп: можно поинтересоваться, что это за препроцессор RS_B (или не препроцессор?) на русском языке?:))
     
  7. AlexCab

    AlexCab New Member

    Blog Posts:
    0