падает функция socket

Тема в разделе "WASM.WIN32", создана пользователем doctor_Ice, 1 май 2007.

  1. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    выполняю такой код
    Код (Text):
    1.            lea       eax, [.wsd]
    2.            stdcall   CallWS2_32, _WSAStartup, 0202h, eax
    3.            IfSo      eax, 0, .Go
    4.            ret
    5. .Go:
    6.            stdcall   CallWS2_32, _socket, AF_INET, SOCK_STREAM, 0
    7.            stdcall   CallWS2_32, _WSACleanup
    из основново треда и все нормально работает но если я создаю новый тред и выполняю этод код там то прога падает на функции socket. падает в nvappfilter.dll addres a467. непойму в чем дело =( если кто знает подскажите в чем баг.
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    так ниче не понятно. может даш более полный сорс
     
  3. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    вот более полный код

    Код (Text):
    1. Entry:
    2.  
    3. db 0cch
    4.            stdcall   TestX ; тут все ок
    5.  
    6.  
    7.            stdcall   RunThread, TestThread, 0
    8.  
    9. ;& newer exit
    10.            stdcall   CallKernel32, _Sleep, INFINITE
    11.  
    12.            ret
    13.  
    14.  
    15. proc TestX stdcall uses eax ebx edx edi esi
    16.  
    17. locals
    18. .wsd:
    19. db sizeof.WSADATA dup (?)
    20. endl
    21.  
    22.            stdcall   GetMainModules, TRUE, TRUE
    23.            lea       eax, [.wsd]
    24.            stdcall   CallWS2_32, _WSAStartup, 0202h, eax
    25.            IfSo      eax, 0, .Go
    26.            ret
    27. .Go:
    28.            stdcall   CallWS2_32, _socket, AF_INET, SOCK_STREAM, 0
    29.            stdcall   CallWS2_32, _WSACleanup
    30.  
    31.            ret
    32. endp
    33.  
    34. proc RunThread stdcall uses ebx ecx edx, startaddr, param
    35.  
    36.  
    37.            lea       eax, [param]
    38.            push      eax
    39.            mov       ebx, esp
    40.            stdcall   CallKernel32, _CreateThread, NULL, NULL, d_w_p [startaddr], eax, CREATE_SUSPENDED, ebx
    41.  
    42.            push      eax
    43.            stdcall   CallKernel32, _ResumeThread, eax
    44.            pop       eax
    45.  
    46.            ret
    47. endp
    48.  
    49.  
    50.  
    51.  
    52. proc TestThread stdcall uses ebx esi edi, .lpparam
    53.  
    54. db 0cch
    55.            stdcall   TestX ; здесь падаем
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    вот так работает

    Код (Text):
    1. include 'win32ax.inc'
    2. .code
    3.  
    4. proc start
    5. locals
    6. .wsd:
    7. db sizeof.WSADATA dup (?)
    8. endl
    9.  
    10.            lea       eax, [.wsd]
    11.            stdcall   [WSAStartup], 0202h, eax
    12.  
    13.            stdcall   TestX ; òóò âñå îê
    14.  
    15.  
    16.            stdcall   RunThread, TestThread, 0
    17.  
    18. ;& newer exit
    19.            invoke   Sleep, -1
    20.  
    21.            ret
    22. endp
    23.  
    24.  
    25. proc TestX stdcall uses eax ebx edx edi esi
    26.  
    27. locals
    28. .wsd:
    29. db sizeof.WSADATA dup (?)
    30. endl
    31.  
    32. ;           lea       eax, [.wsd]
    33. ;           stdcall   [WSAStartup], 0202h, eax
    34.            stdcall   [socket], AF_INET, SOCK_STREAM, 0
    35. ;           stdcall   [WSACleanup]
    36.  
    37.            ret
    38. endp
    39.  
    40. proc RunThread stdcall uses ebx ecx edx, startaddr, param
    41.  
    42.  
    43.            lea       eax, [param]
    44.            push      eax
    45.            mov       ebx, esp
    46.            stdcall   [CreateThread], NULL, NULL, [startaddr], eax, CREATE_SUSPENDED, ebx
    47.  
    48.            push      eax
    49.            stdcall   [ResumeThread], eax
    50.            pop       eax
    51.  
    52.            ret
    53. endp
    54.  
    55.  
    56.  
    57.  
    58. proc TestThread stdcall uses ebx esi edi, .lpparam
    59.  
    60. ;db 0cch
    61.            stdcall   TestX ; çäåñü ïàäàåì
    62.            ret
    63. endp
    64. .end start
    видимо для процесса надо один раз сделать WSAStartup и все
     
  5. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    а вот и нет я несколько раз подряд запускал тест из основного треда и все было ок.
    кстати падение происходит в nvappfilter.dll на функе проверки стека

    код на котором падает

    Код (Text):
    1. mov eax, 13880h
    2. call chhkstk
    3.  
    4. ...
    5.  
    6. chkstk:
    7. push ecx
    8. cmp eax, 4096
    9. lea ecx, [esp+8]
    10. jb a470
    11. a467:
    12. sub ecx, 4096
    13. sub eax, 4096
    14. test [ecx], eax ; здесь падаем
    15. cmp eax, 4096
    16. jae a467:
    17. a470:
    18. ....
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    зачем извращаться с несколькими вызовами?)
     
  7. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    да дело ведь не в этом.....дело в том что мне нужно все это делать из треда а там функа падает =(
     
  8. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    мудрый человек подсказал что косячек в нвидиа фаере. фаер был убит и теперь все работает.

    ps.
    очень жаль что этого мудрого человека на этом форуме забанили =(
     
  9. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    а кто это?)
     
  10. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
  11. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    Ну дык библиотечка nvappfilter.dll явно не системная ;))