Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нехороший boost::filesystem 
:(
    Опции темы
Randajad
Дата 24.6.2012, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



8 RP x64. Проблема не в вянде.
Поотлаживал идой. 4.7 генерит какой-то странный пролог с TLS. В одном месте оно делает SetLastError взад после своих манипуляций, а во втором забывает это сделать.

Добавлено @ 10:18
Ах да, компилятор к сведению 32 битный. Это про TDM.

Это сообщение отредактировал(а) Randajad - 24.6.2012, 10:18
PM MAIL   Вверх
boostcoder
Дата 24.6.2012, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Randajad @  24.6.2012,  09:48 Найти цитируемый пост)
Тут errval магическим образом обнуляется. Если же его принтфать прямо на "месте" ошибки, то он имеет кошерное значение.

этот баг пофикшен довольно давно.
я об этом тут писал:
Цитата

Добавлен патч исправляющий ошибку возникающую при генерации компилятором кода развертывания стека и использованием GetLastError() в этом скопе.


дай ссылки на сборки которые используешь.

Добавлено через 1 минуту и 43 секунды
Цитата(Randajad @  24.6.2012,  10:18 Найти цитируемый пост)
В одном месте оно делает SetLastError взад после своих манипуляций, а во втором забывает это сделать.

можешь дать больше информации? чтоб я мог понять, где это "второе место".

PM WWW   Вверх
Randajad
Дата 24.6.2012, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



http://sourceforge.net/projects/mingwbuild...jlj.7z/download
И
http://sourceforge.net/projects/mingwbuild...jlj.7z/download

Соотвественно. =_=
В обоих ошибка актуальна. 
PM MAIL   Вверх
boostcoder
Дата 24.6.2012, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Randajad @  24.6.2012,  10:27 Найти цитируемый пост)
В обоих ошибка актуальна.

-
Цитата(boostcoder @  24.6.2012,  10:24 Найти цитируемый пост)
можешь дать больше информации? чтоб я мог понять, где это "второе место".


PM WWW   Вверх
Randajad
Дата 24.6.2012, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



Конечна.

http://rghost.ru/38839677
Экзешка с кодом с LWS, который ты приводил выше.

.text:0040797E call    sub_417210

В этом месте он вызывает пролог в функции

Код

fs::file_status process_status_failure(const path& p, error_code* ec)


о коей писал выше.

Пролог вызывает вот здесь "первое место".

Код

.text:0041723F call    sub_423400


Тут ошибки нету.

И следом за ним он вызывает второе место:

Код

.text:00417252 call    sub_423480


Во втором месте даже намека на попытку сохранения кода ошибки и его последующего восстановления нету.

Вот код второго места:

Код

.text:00423480 sub_423480 proc near                    ; CODE XREF: sub_4171B0+39p
.text:00423480                                         ; sub_417210+42p ...
.text:00423480
.text:00423480 var_3C= dword ptr -3Ch
.text:00423480 var_38= dword ptr -38h
.text:00423480 var_34= dword ptr -34h
.text:00423480 var_28= dword ptr -28h
.text:00423480 var_24= dword ptr -24h
.text:00423480 var_20= dword ptr -20h
.text:00423480 var_10= dword ptr -10h
.text:00423480 var_C= dword ptr -0Ch
.text:00423480 var_8= dword ptr -8
.text:00423480 var_4= dword ptr -4
.text:00423480 arg_0= dword ptr  4
.text:00423480 arg_4= dword ptr  8
.text:00423480
.text:00423480 sub     esp, 3Ch
.text:00423483 mov     [esp+3Ch+var_10], ebx
.text:00423487 mov     [esp+3Ch+var_C], esi
.text:0042348B mov     esi, [esp+3Ch+arg_0]
.text:0042348F mov     [esp+3Ch+var_8], edi
.text:00423493 mov     [esp+3Ch+var_4], ebp
.text:00423497 call    sub_422EC0
.text:0042349C lea     edi, [eax+34h]
.text:0042349F mov     ebx, eax
.text:004234A1 mov     [esp+3Ch+var_3C], edi
.text:004234A4 call    sub_426600
.text:004234A9 cmp     [ebx+28h], esi
.text:004234AC jbe     short loc_4234E0
.text:004234AE mov     edx, [ebx+2Ch]
.text:004234B1
.text:004234B1 loc_4234B1:                             ; CODE XREF: sub_423480+100j
.text:004234B1 mov     eax, [esp+3Ch+arg_4]
.text:004234B5 mov     [edx+esi*4], eax
.text:004234B8 mov     eax, [ebx+30h]
.text:004234BB mov     byte ptr [eax+esi], 1
.text:004234BF mov     [esp+3Ch+var_3C], edi
.text:004234C2 call    sub_4265E0
.text:004234C7 xor     eax, eax
.text:004234C9
.text:004234C9 loc_4234C9:                             ; CODE XREF: sub_423480+112j
.text:004234C9 mov     ebx, [esp+3Ch+var_10]
.text:004234CD mov     esi, [esp+3Ch+var_C]
.text:004234D1 mov     edi, [esp+3Ch+var_8]
.text:004234D5 mov     ebp, [esp+3Ch+var_4]
.text:004234D9 add     esp, 3Ch
.text:004234DC retn


Вот коды трех функций, которые вызываются вторым местом.

Код

.text:00422EC0 sub_422EC0 proc near                    ; CODE XREF: sub_423400+1Fp
.text:00422EC0                                         ; sub_423480+17p ...
.text:00422EC0
.text:00422EC0 var_3C= dword ptr -3Ch
.text:00422EC0 var_38= dword ptr -38h
.text:00422EC0 var_34= dword ptr -34h
.text:00422EC0 var_30= dword ptr -30h
.text:00422EC0 var_2C= dword ptr -2Ch
.text:00422EC0 var_28= dword ptr -28h
.text:00422EC0 var_24= dword ptr -24h
.text:00422EC0 var_10= dword ptr -10h
.text:00422EC0 var_C= dword ptr -0Ch
.text:00422EC0 var_8= dword ptr -8
.text:00422EC0 var_4= dword ptr -4
.text:00422EC0
.text:00422EC0 sub     esp, 3Ch
.text:00422EC3 cmp     ds:dword_49CEBC, 1
.text:00422ECA mov     [esp+3Ch+var_10], ebx
.text:00422ECE mov     [esp+3Ch+var_C], esi
.text:00422ED2 mov     [esp+3Ch+var_8], edi
.text:00422ED6 mov     [esp+3Ch+var_4], ebp
.text:00422EDA jz      short loc_422EE1
.text:00422EDC call    sub_422E30
.text:00422EE1
.text:00422EE1 loc_422EE1:                             ; CODE XREF: sub_422EC0+1Aj
.text:00422EE1 mov     eax, dword_48C074
.text:00422EE6 mov     [esp+3Ch+var_3C], eax
.text:00422EE9 call    ds:TlsGetValue
.text:00422EEF sub     esp, 4
.text:00422EF2 test    eax, eax
.text:00422EF4 jz      short loc_422F10
.text:00422EF6
.text:00422EF6 loc_422EF6:                             ; CODE XREF: sub_422EC0+15Ej
.text:00422EF6                                         ; sub_422EC0+167j
.text:00422EF6 mov     ebx, [esp+3Ch+var_10]
.text:00422EFA mov     esi, [esp+3Ch+var_C]
.text:00422EFE mov     edi, [esp+3Ch+var_8]
.text:00422F02 mov     ebp, [esp+3Ch+var_4]
.text:00422F06 add     esp, 3Ch
.text:00422F09 retn
.text:00422F09 ; ---------------------------------------------------------------------------
.text:00422F0A align 10h
.text:00422F10
.text:00422F10 loc_422F10:                             ; CODE XREF: sub_422EC0+34j
.text:00422F10 call    sub_422D80
.text:00422F15 mov     edx, ds:off_4A0028
.text:00422F1B test    edx, edx
.text:00422F1D mov     ebx, eax
.text:00422F1F jz      loc_423023
.text:00422F25 test    eax, eax
.text:00422F27 jz      loc_42301C
.text:00422F2D mov     dword ptr [eax+24h], 1
.text:00422F34 call    ds:GetCurrentThreadId
.text:00422F3A mov     [ebx+40h], eax
.text:00422F3D mov     [esp+3Ch+var_30], 0
.text:00422F45 mov     [esp+3Ch+var_34], 0
.text:00422F4D mov     [esp+3Ch+var_38], 1
.text:00422F55 mov     [esp+3Ch+var_3C], 0
.text:00422F5C call    ds:CreateEventA
.text:00422F62 mov     esi, ds:GetCurrentProcess
.text:00422F68 mov     dword ptr [ebx+1Ch], 0FFFFFFFFh
.text:00422F6F mov     dword ptr [ebx+34h], 0
.text:00422F76 mov     dword ptr [ebx+38h], 0FEEDBAB1h
.text:00422F7D mov     dword ptr [ebx+3Ch], 1
.text:00422F84 mov     dword ptr [ebx+68h], 0
.text:00422F8B sub     esp, 10h
.text:00422F8E mov     [ebx+18h], eax
.text:00422F91 mov     dword ptr [ebx+14h], 0
.text:00422F98 call    esi ; GetCurrentProcess
.text:00422F9A mov     ebp, eax
.text:00422F9C call    ds:GetCurrentThread
.text:00422FA2 mov     edi, eax
.text:00422FA4 call    esi ; GetCurrentProcess
.text:00422FA6 lea     edx, [ebx+14h]
.text:00422FA9 mov     [esp+3Ch+var_24], 2
.text:00422FB1 mov     [esp+3Ch+var_28], 0
.text:00422FB9 mov     [esp+3Ch+var_2C], 0
.text:00422FC1 mov     [esp+3Ch+var_30], edx
.text:00422FC5 mov     [esp+3Ch+var_34], ebp
.text:00422FC9 mov     [esp+3Ch+var_38], edi
.text:00422FCD mov     [esp+3Ch+var_3C], eax
.text:00422FD0 call    ds:DuplicateHandle
.text:00422FD6 sub     esp, 1Ch
.text:00422FD9 test    eax, eax
.text:00422FDB jz      short loc_42302C
.text:00422FDD mov     eax, [ebx+14h]
.text:00422FE0 mov     [esp+3Ch+var_3C], eax
.text:00422FE3 call    ds:GetThreadPriority
.text:00422FE9 mov     dword ptr [ebx+6Ch], 0
.text:00422FF0 mov     [ebx+70h], eax
.text:00422FF3 movzx   eax, byte ptr [ebx+20h]
.text:00422FF7 sub     esp, 4
.text:00422FFA and     eax, 0FFFFFFCFh
.text:00422FFD or      eax, 10h
.text:00423000 mov     [ebx+20h], al
.text:00423003 mov     eax, dword_48C074
.text:00423008 mov     [esp+3Ch+var_38], ebx
.text:0042300C mov     [esp+3Ch+var_3C], eax
.text:0042300F call    ds:TlsSetValue
.text:00423015 sub     esp, 8
.text:00423018 test    eax, eax
.text:0042301A jz      short loc_42302C
.text:0042301C
.text:0042301C loc_42301C:                             ; CODE XREF: sub_422EC0+67j
.text:0042301C mov     eax, ebx
.text:0042301E jmp     loc_422EF6
.text:00423023 ; ---------------------------------------------------------------------------
.text:00423023
.text:00423023 loc_423023:                             ; CODE XREF: sub_422EC0+5Fj
.text:00423023 xor     ebx, ebx
.text:00423025 mov     eax, ebx
.text:00423027 jmp     loc_422EF6
.text:0042302C ; ---------------------------------------------------------------------------
.text:0042302C
.text:0042302C loc_42302C:                             ; CODE XREF: sub_422EC0+11Bj
.text:0042302C                                         ; sub_422EC0+15Aj
.text:0042302C lea     esi, [esi+0]
.text:00423030 call    abort
.text:00423030 sub_422EC0 endp


Код

.text:00426600 sub_426600 proc near                    ; CODE XREF: sub_422860+Fp
.text:00426600                                         ; sub_422910+12p ...
.text:00426600
.text:00426600 var_3C= dword ptr -3Ch
.text:00426600 var_20= dword ptr -20h
.text:00426600 arg_0= dword ptr  4
.text:00426600
.text:00426600 push    ebp
.text:00426601 mov     eax, 16h
.text:00426606 push    edi
.text:00426607 push    esi
.text:00426608 push    ebx
.text:00426609 sub     esp, 2Ch
.text:0042660C mov     edx, [esp+3Ch+arg_0]
.text:00426610 test    edx, edx
.text:00426612 jz      short loc_42666D
.text:00426614 mov     eax, [esp+3Ch+arg_0]
.text:00426618 mov     esi, ds:Sleep
.text:0042661E lea     ebp, [eax+8]
.text:00426621 mov     [esp+3Ch+var_20], esi
.text:00426625
.text:00426625 loc_426625:                             ; CODE XREF: sub_426600+69j
.text:00426625 mov     eax, [esp+3Ch+arg_0]
.text:00426629 mov     edi, 1
.text:0042662E sub     edi, [eax+8]
.text:00426631
.text:00426631 loc_426631:                             ; CODE XREF: sub_426600+86j
.text:00426631 xor     eax, eax
.text:00426633 cmp     dword ptr [ebp+0], 1
.text:00426637 setnz   al
.text:0042663A xor     ebx, ebx
.text:0042663C test    al, al
.text:0042663E jz      short loc_426659
.text:00426640
.text:00426640 loc_426640:                             ; CODE XREF: sub_426600+57j
.text:00426640 mov     [esp+3Ch+var_3C], 0
.text:00426647 call    esi ; Sleep
.text:00426649 mov     eax, ebx
.text:0042664B sub     esp, 4
.text:0042664E cmp     dword ptr [ebp+0], 1
.text:00426652 setnz   al
.text:00426655 test    al, al
.text:00426657 jnz     short loc_426640
.text:00426659
.text:00426659 loc_426659:                             ; CODE XREF: sub_426600+3Ej
.text:00426659 test    edi, edi
.text:0042665B jnz     short loc_426675
.text:0042665D
.text:0042665D loc_42665D:                             ; CODE XREF: sub_426600+88j
.text:0042665D xor     eax, eax
.text:0042665F lock sub dword ptr [ebp+0], 1
.text:00426664 setz    al
.text:00426667 test    al, al
.text:00426669 jz      short loc_426625
.text:0042666B xor     eax, eax
.text:0042666D
.text:0042666D loc_42666D:                             ; CODE XREF: sub_426600+12j
.text:0042666D add     esp, 2Ch
.text:00426670 pop     ebx
.text:00426671 pop     esi
.text:00426672 pop     edi
.text:00426673 pop     ebp
.text:00426674 retn
.text:00426675 ; ---------------------------------------------------------------------------
.text:00426675
.text:00426675 loc_426675:                             ; CODE XREF: sub_426600+5Bj
.text:00426675 mov     [esp+3Ch+var_3C], 0
.text:0042667C call    [esp+3Ch+var_20]
.text:00426680 sub     esp, 4
.text:00426683 sub     edi, 1
.text:00426686 jns     short loc_426631
.text:00426688 jmp     short loc_42665D
.text:00426688 sub_426600 endp


Код

.text:004265E0 sub_4265E0 proc near                    ; CODE XREF: sub_422860+6Ep
.text:004265E0                                         ; sub_422910+4Dp ...
.text:004265E0
.text:004265E0 arg_0= dword ptr  4
.text:004265E0
.text:004265E0 mov     edx, [esp+arg_0]
.text:004265E4 mov     eax, 16h
.text:004265E9 test    edx, edx
.text:004265EB jz      short locret_4265F6
.text:004265ED mov     dword ptr [edx+8], 1
.text:004265F4 xor     al, al
.text:004265F6
.text:004265F6 locret_4265F6:                          ; CODE XREF: sub_4265E0+Bj
.text:004265F6 rep retn
.text:004265F6 sub_4265E0 endp


А вообще могу скинуть файлик иды с брейкпоинтами / псевдо C код. Ида 6.1, если что.

Добавлено @ 10:37
Да, просто я ответил раньше, чем ты дополнил свой пост. smile

Это сообщение отредактировал(а) Randajad - 24.6.2012, 13:02
PM MAIL   Вверх
boostcoder
Дата 24.6.2012, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Randajad @  24.6.2012,  10:37 Найти цитируемый пост)
А вообще могу скинуть файлик иды с брейкпоинтами / ее псевдо C код. Ида 6.1, если что.

давай.

PM WWW   Вверх
Randajad
Дата 24.6.2012, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



http://rghost.ru/38839931
Там два брейкпоинта: на GetFileAttributesW и перед GetLastError на прологе. В самом прологе не ставил, ибо он вызывается в over9000 местах.

Это сообщение отредактировал(а) Randajad - 24.6.2012, 10:58
PM MAIL   Вверх
boostcoder
Дата 24.6.2012, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



ок.

ща еще венду переставить нужно. триалка истекла smile 
PM WWW   Вверх
Randajad
Дата 24.6.2012, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



Пролог.

Код

int __cdecl sub_417210(int a1)
{
  int v1; // eax@1
  int result; // eax@3

  v1 = dword_48C024;
  if ( dword_48C024 < 0 )
  {
    sub_4170D0();
    v1 = dword_48C024;
  }
  if ( v1 )
  {
    *(_DWORD *)a1 = sub_423400(dword_49C4C8); // первое место
    result = sub_423480(dword_49C4C8, a1); // второе
  }
  else
  {
    result = dword_49C4CC;
    dword_49C4CC = a1;
    *(_DWORD *)a1 = result;
  }
  return result;
}


Первое место на всякий:
Код

int __cdecl sub_423400(unsigned int a1)
{
  DWORD v1; // ebp@1
  LPVOID v2; // eax@1
  int v3; // edi@1
  LPVOID v4; // ebx@1
  int v5; // ebx@3

  v1 = GetLastError();
  v2 = sub_422EC0();
  v3 = (int)((char *)v2 + 52);
  v4 = v2;
  sub_426600((char *)v2 + 52);
  if ( *((_DWORD *)v4 + 10) > a1 && *(_BYTE *)(*((_DWORD *)v4 + 12) + a1) )
    v5 = *(_DWORD *)(*((_DWORD *)v4 + 11) + 4 * a1);
  else
    v5 = 0;
  sub_4265E0(v3);
  SetLastError(v1);
  return v5;
}


Второе место.
Код

signed int __cdecl sub_423480(unsigned int a1, int a2)
{
  int v2; // eax@1
  int v3; // edi@1
  int v4; // ebx@1
  void *v5; // edx@2
  int v7; // ebp@5
  void *v8; // edx@5
  void *v9; // [sp+18h] [bp-24h]@6
  void *v10; // [sp+1Ch] [bp-20h]@6

  v2 = sub_422EC0();
  v3 = v2 + 52;
  v4 = v2;
  sub_426600(v2 + 52);
  if ( *(_DWORD *)(v4 + 40) > a1 )
  {
    v5 = *(void **)(v4 + 44);
LABEL_3:
    *((_DWORD *)v5 + a1) = a2;
    *(_BYTE *)(*(_DWORD *)(v4 + 48) + a1) = 1;
    sub_4265E0(v3);
    return 0;
  }
  v7 = a1 + 1;
  v8 = realloc(*(void **)(v4 + 44), 4 * (a1 + 1));
  if ( v8 )
  {
    v9 = v8;
    v10 = realloc(*(void **)(v4 + 48), a1 + 1);
    if ( v10 )
    {
      memset((char *)v9 + 4 * *(_DWORD *)(v4 + 40), 0, 4 * (v7 - *(_DWORD *)(v4 + 40)));
      memset((char *)v10 + *(_DWORD *)(v4 + 40), 0, v7 - *(_DWORD *)(v4 + 40));
      v5 = v9;
      *(_DWORD *)(v4 + 40) = v7;
      *(_DWORD *)(v4 + 44) = v9;
      *(_DWORD *)(v4 + 48) = v10;
      goto LABEL_3;
    }
  }
  sub_4265E0(v3);
  return 12;
}


Вызывает оно следующие функции:

Код

LPVOID __cdecl sub_422EC0()
{
  LPVOID result; // eax@3
  int v1; // eax@5
  int v2; // ebx@5
  HANDLE v3; // eax@7
  HANDLE v4; // ebp@7
  HANDLE v5; // edi@7
  HANDLE v6; // eax@7
  int v7; // eax@8

  if ( dword_49CEBC != 1 )
    sub_422E30();
  result = TlsGetValue(dword_48C074);
  if ( !result )
  {
    v1 = sub_422D80();
    v2 = v1;
    if ( off_4A0028 )
    {
      if ( v1 )
      {
        *(_DWORD *)(v1 + 36) = 1;
        *(_DWORD *)(v1 + 64) = GetCurrentThreadId();
        v3 = CreateEventA(0, 1, 0, 0);
        *(_DWORD *)(v2 + 28) = -1;
        *(_DWORD *)(v2 + 52) = 0;
        *(_DWORD *)(v2 + 56) = -17974607;
        *(_DWORD *)(v2 + 60) = 1;
        *(_DWORD *)(v2 + 104) = 0;
        *(_DWORD *)(v2 + 24) = v3;
        *(_DWORD *)(v2 + 20) = 0;
        v4 = GetCurrentProcess();
        v5 = GetCurrentThread();
        v6 = GetCurrentProcess();
        if ( !DuplicateHandle(v6, v5, v4, (LPHANDLE)(v2 + 20), 0, 0, 2u)
          || (v7 = GetThreadPriority(*(HANDLE *)(v2 + 20)),
              *(_DWORD *)(v2 + 108) = 0,
              *(_DWORD *)(v2 + 112) = v7,
              *(_BYTE *)(v2 + 32) = *(_BYTE *)(v2 + 32) & 0xCF | 0x10,
              !TlsSetValue(dword_48C074, (LPVOID)v2)) )
          abort();
      }
      result = (LPVOID)v2;
    }
    else
    {
      result = 0;
    }
  }
  return result;
}


Код

int __cdecl sub_422E30()
{
  int v0; // esi@1

  v0 = sub_422860() + 4;
  sub_4251F0(v0);
  if ( dword_49CEBC )
  {
    if ( dword_49CEBC != 1 )
      fprintf((FILE *)iob + 2, " once %p is %d\n", &dword_49CEBC, dword_49CEBC);
  }
  else
  {
    sub_4229E0();
    dword_49CEBC = 1;
  }
  sub_424EA0(v0);
  sub_422910();
  return 0;
}


Код

signed int __cdecl sub_426600(int a1)
{
  signed int result; // eax@1
  int v3; // edi@2

  result = 22;
  if ( a1 )
  {
    _EBP = a1 + 8;
    v3 = 1 - *(_DWORD *)(a1 + 8);
    do
    {
      while ( *(_DWORD *)_EBP != 1 )
        Sleep(0);
      if ( !v3 )
        break;
      Sleep(0);
      --v3;
    }
    while ( v3 >= 0 );
    __asm { lock sub dword ptr [ebp+0], 1 }
    result = 0;
  }
  return result;
}


Код

void __cdecl sub_4265E0(int a1)
{
  if ( a1 )
    *(_DWORD *)(a1 + 8) = 1;
  __asm { rep retn }
}


Добавлено через 9 минут и 45 секунд
Offtop:

Зачем ее переставлять? Медицина в наши времена хорошо развита. smile


Это сообщение отредактировал(а) Randajad - 24.6.2012, 10:59
PM MAIL   Вверх
boostcoder
Дата 24.6.2012, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



принципы не позволяют.

PM WWW   Вверх
boostcoder
Дата 25.6.2012, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



вроде разобрался. сейчас соберу одну сборку.
PM WWW   Вверх
boostcoder
Дата 25.6.2012, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



да, пофиксил.

релиз 4.7.1 пересобиру на днях с суффиксом 'PREFINAL'.
во всех последующих сборках этот баг будет пофикшен.


Randajad, спасибо за реппорт.
в следующий раз, вместо голословных заявлений, делай то что сделал в последнем и предпоследнем своих постах.

PM WWW   Вверх
Randajad
Дата 25.6.2012, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



Окай, спасибо. 4.8 тоже жду. smile

P.S. да я, вроде, просто написал о том, что у меня оно не работает, надеясь найти тех людей, кто подскажет ошибку. smile
PM MAIL   Вверх
boostcoder
Дата 25.6.2012, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Randajad @  25.6.2012,  13:05 Найти цитируемый пост)
надеясь найти тех людей, кто подскажет ошибку.

я же тоже не ризиновый.
у меня офф. работа, и еще несколько проектов, помимо mingw-builds.

Добавлено через 2 минуты и 38 секунд
и тему, наверное, можно закрыть ;)

PM WWW   Вверх
Randajad
Дата 29.6.2012, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



http://sourceforge.net/projects/mingwbuild...jlj.7z/download

Problem still exists.

Добавлено @ 19:42
Пойду-ка я обратно на ICC, пока все эти плохие дела не разрешатся.

Это сообщение отредактировал(а) Randajad - 29.6.2012, 19:43
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0988 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.