Антон Кочков | 2 May 12:30 2016
Picon

WinDbg protocol for debugging, PDB implementation

Hello Everyone!
After I saw an article mentioning you're using WinDbg for debugging, I
thought that information below could be interesting for you:

We (radare2 project) have developed our own implementation of both GDB
and WinDbg protocol parsers as a separate libraries in pure C and
without hard dependencies of external libraries.

Here you can find our WinDbg protocol implementation
https://github.com/radare/radare2/tree/master/shlr/wind
And here you can find our PDB parser
https://github.com/radare/radare2/tree/master/libr/bin/pdb

This is how to use radare2 for connecting to WinDbg server
https://github.com/radare/radare2/blob/master/doc/windbg

And here is how to use radare2 for parsing PDB files
https://github.com/radare/radare2/blob/master/doc/pdb/pdb_usage

Our goal is to write complete implementations of WinDbg and PDB, both
platform independent and working everywhere.
If you're interested on joining forces for that - feel free to answer
this email or join us in Telegram or IRC - "#radare" on both.

I hope this would be useful for someone.

Kind regards,
Anton Kochkov.
dd | 27 Apr 20:36 2016
Picon

Web Developer

Hello guys,
My name is Federico Montanari and I am a student. I am from Italy and I 
hope to join to ReactOS Team as web developer.
My skills:
- English and Italian Languages
- HTML and CSS (I'm learning Drupal)
- Base of C (Not WIN32 API)
Timezone: UTC +1
ReactOS Account name: decodp
ReactOS IRC name: decodp

What Can I do here?
I can write some articles about ReactOS Status or something, fix online 
bugs and I can be moderator of forum and wiki to delete spam.
This is my proposal. Have you got any idea?

I ready to work on team (especially ReactOS Team)
You are a great team! Thank you for your work on ReactOS (I wrote one 
program in C and.. it was difficult :p)

With my greetings,
Federico Montanari
mvardan | 25 Apr 16:27 2016
Picon

Greetings from GSoC student!

Hello ReactOS community!

My name is Vardan.

First of all I want to say thank you to all the members of this community who helped me to figure out status of works and make a proposal for GSoC. Also I want to express my gratitude to those who makes decision to accept my proposal. It is very responsible for me to be accepted for this project. You can be sure that I'll do my best to be able to meet your expectations.

For all other members of ReactOS community, I want to introduce myself. I am 1st year master student from Armenia. I have about 2 years of Linux Driver development experience. My GSoC project title is "Improve ReactOS USB stack" and I will be very grateful for any help from anyone of you. I can easily communicate on Russian and English. 

During this month after submission and before acceptance I have done some investigation of ReactOS and it's built environment. Related to RosBE I want to express separate thanks to them who created such environment where newbies like me are able to easily build and test ReactOS and it's drivers (even with MSVS!). ReactOS wiki page is also very helpful!

I have started Investigation of NT driver concepts with "Microsoft Windows Internals" book and some online articles. Any recommendations related sources of information are strongly appreciated by me.

I hope that this GSoC project will be a good starting point for me, to join to "very small and exclusive ranks of people who know how to do NT systems development" :)

Best regards,
Vardan.
_______________________________________________
Ros-dev mailing list
Ros-dev@...
http://www.reactos.org/mailman/listinfo/ros-dev
Pierre Schweitzer | 24 Apr 21:13 2016

Re: [ros-diffs] [spetreolle] 71201: [CDMAKE] Don't check for extension length on Joliet images. Encountered with AHK binaries. ONLINE-567

Given there seems to be no place where s is checked for length, it would
be more appropriated to perform such as check:

if ((!joliet && strlen(s) > MAX_EXTENSION_LENGTH) || strlen(s) >
MAX_NAME_LENGTH)

Le 24/04/2016 20:59, spetreolle@... a écrit :
> Author: spetreolle
> Date: Sun Apr 24 18:59:33 2016
> New Revision: 71201
> 
> URL: http://svn.reactos.org/svn/reactos?rev=71201&view=rev
> Log:
> [CDMAKE]
> Don't check for extension length on Joliet images.
> Encountered with AHK binaries.
> 
> ONLINE-567
> 
> Modified:
>     trunk/reactos/sdk/tools/cdmake/cdmake.c
> 
> Modified: trunk/reactos/sdk/tools/cdmake/cdmake.c
> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/sdk/tools/cdmake/cdmake.c?rev=71201&r1=71200&r2=71201&view=diff
> ==============================================================================
> --- trunk/reactos/sdk/tools/cdmake/cdmake.c	[iso-8859-1] (original)
> +++ trunk/reactos/sdk/tools/cdmake/cdmake.c	[iso-8859-1] Sun Apr 24 18:59:33 2016
>  <at>  <at>  -692,7 +692,8  <at>  <at> 
>              error_exit("'%s' is not ISO-9660, aborting...", filename);
>          s++;
>      }
> -    if (strlen(s) > MAX_EXTENSION_LENGTH)
> +    // Check for extension length
> +    if (!joliet && strlen(s) > MAX_EXTENSION_LENGTH)
>      {
>          error_exit("'%s' has too long extension, aborting...", filename);
>      }
> 
> 

--

-- 
Pierre Schweitzer <pierre at reactos.org>
System & Network Administrator
Senior Kernel Developer
ReactOS Deutschland e.V.

Attachment (smime.p7s): application/pkcs7-signature, 5353 bytes
_______________________________________________
Ros-dev mailing list
Ros-dev@...
http://www.reactos.org/mailman/listinfo/ros-dev
Alex Ionescu | 24 Apr 17:19 2016
Picon

Re: [ros-diffs] [akhaldi] 71183: [CLASSPNP] Fix MSVC build. Brought to you by Timo.

Thomas, the standard says:

"If one of the strings has an encoding prefix and the other doesn't,
the one that doesn't will be considered to have the same encoding
prefix as the other."

In other words, this now sends a wide-string to ASSERTMSG. Which is wrong.
Best regards,
Alex Ionescu

On Sun, Apr 24, 2016 at 5:14 AM, Thomas Faber <thomas.faber@...> wrote:
> On 2016-04-20 14:16, akhaldi@... wrote:
>> [CLASSPNP] Fix MSVC build. Brought to you by Timo.
>
>> --- trunk/reactos/drivers/storage/classpnp/class.c    [iso-8859-1] (original)
>> +++ trunk/reactos/drivers/storage/classpnp/class.c    [iso-8859-1] Wed Apr 20 12:16:16 2016
>>  <at>  <at>  -877,7 +877,7  <at>  <at> 
>>                  status = devInfo->ClassStopDevice(DeviceObject, IRP_MN_STOP_DEVICE);
>>
>>                  ASSERTMSG("ClassDispatchPnp !! STOP_DEVICE should "
>> -                          "never be failed\n", NT_SUCCESS(status));
>> +                          L"never be failed\n", NT_SUCCESS(status));
>>
>>                  if(isFdo) {
>>                      status = ClassForwardIrpSynchronous(commonExtension, Irp);
>>
>
> This makes no sense to me at all. You're now concatenating a narrow and
> a wide string (which should be an error, but compilers suck), and
> passing it to a macro that calls RtlAssert -- which expects a narrow
> string.
> Am I missing something here?
>
> _______________________________________________
> Ros-dev mailing list
> Ros-dev@...
> http://www.reactos.org/mailman/listinfo/ros-dev
Thomas Faber | 24 Apr 14:14 2016

Re: [ros-diffs] [akhaldi] 71183: [CLASSPNP] Fix MSVC build. Brought to you by Timo.

On 2016-04-20 14:16, akhaldi@... wrote:
> [CLASSPNP] Fix MSVC build. Brought to you by Timo.

> --- trunk/reactos/drivers/storage/classpnp/class.c	[iso-8859-1] (original)
> +++ trunk/reactos/drivers/storage/classpnp/class.c	[iso-8859-1] Wed Apr 20 12:16:16 2016
>  <at>  <at>  -877,7 +877,7  <at>  <at> 
>                  status = devInfo->ClassStopDevice(DeviceObject, IRP_MN_STOP_DEVICE);
>  
>                  ASSERTMSG("ClassDispatchPnp !! STOP_DEVICE should "
> -                          "never be failed\n", NT_SUCCESS(status));
> +                          L"never be failed\n", NT_SUCCESS(status));
>  
>                  if(isFdo) {
>                      status = ClassForwardIrpSynchronous(commonExtension, Irp);
> 

This makes no sense to me at all. You're now concatenating a narrow and
a wide string (which should be an error, but compilers suck), and
passing it to a macro that calls RtlAssert -- which expects a narrow
string.
Am I missing something here?
Thomas Faber | 24 Apr 14:08 2016

Re: [ros-diffs] [spetreolle] 71188: [NDIS] Silence a debug output. CORE-11137 #resolve

On 2016-04-23 21:09, spetreolle@... wrote:
> [NDIS]
> Silence a debug output.
> CORE-11137 #resolve

> --- trunk/reactos/drivers/network/ndis/ndis/protocol.c	[iso-8859-1] (original)
> +++ trunk/reactos/drivers/network/ndis/ndis/protocol.c	[iso-8859-1] Sat Apr 23 19:09:30 2016
>  <at>  <at>  -321,7 +321,7  <at>  <at> 
>    PLOGICAL_ADAPTER Adapter;
>    PNDIS_REQUEST_MAC_BLOCK MacBlock = (PNDIS_REQUEST_MAC_BLOCK)NdisRequest->MacReserved;
>  
> -  NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
> +  NDIS_DbgPrint(MIN_TRACE, ("Called.\n"));
>  
>    ASSERT(MacBindingHandle);
>    AdapterBinding = GET_ADAPTER_BINDING(MacBindingHandle);

This does not silence the trace. It does the opposite.
Alex Ionescu | 14 Apr 19:34 2016
Picon

Re: [ros-diffs] [tkreuzer] 60701: [NTOSKRNL] - Introduce a new and faster way to return to kernel mode from traps by using a ret 8 instruction instead of an iret. - Make use of KiUserTrap where appropriate - Remov...

Wait, are you suggesting that "doing things better than Microsoft" and
"those idiots have no idea what they're doing" and "we shouldn't just
be copying the instructions they use".... doesn't work? :O

Best regards,
Alex Ionescu

On Thu, Apr 14, 2016 at 8:09 AM, Thomas Faber <thomas.faber@...> wrote:
> Looks like we've encountered an issue with this
> KiTrapReturnNoSegmentsRet8 approach. As seen in
> https://jira.reactos.org/browse/CORE-11115, when a large number of
> interrupts happen, this will cause us to run out of kernel stack.
>
> Since the popfd / ret 8 steps do not happen atomically, interrupts will
> be re-enabled before those 12 bytes of stack are freed, thus many of
> them happening in a row will cause us to run out.
>
> Thoughts?
>
> Thanks!
> -Thomas
>
>
>
> On 2013-10-19 13:33, tkreuzer@... wrote:
>> Author: tkreuzer
>> Date: Sat Oct 19 11:33:34 2013
>> New Revision: 60701
>>
>> URL: http://svn.reactos.org/svn/reactos?rev=60701&view=rev
>> Log:
>> [NTOSKRNL]
>> - Introduce a new and faster way to return to kernel mode from traps by using a ret 8 instruction instead of
an iret.
>> - Make use of KiUserTrap where appropriate
>> - Remove some pointless toplevel volatile
>>
>> Modified:
>>     trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S
>>     trunk/reactos/ntoskrnl/include/internal/i386/ke.h
>>     trunk/reactos/ntoskrnl/include/internal/i386/trap_x.h
>>     trunk/reactos/ntoskrnl/ke/i386/cpu.c
>>     trunk/reactos/ntoskrnl/ke/i386/exp.c
>>     trunk/reactos/ntoskrnl/ke/i386/patpge.c
>>     trunk/reactos/ntoskrnl/ke/i386/trap.s
>>     trunk/reactos/ntoskrnl/ke/i386/traphdlr.c
>>     trunk/reactos/ntoskrnl/ke/i386/usercall.c
>>     trunk/reactos/ntoskrnl/ke/time.c
>>
>> Modified: trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S?rev=60701&r1=60700&r2=60701&view=diff
>> ==============================================================================
>> --- trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S   [iso-8859-1] (original)
>> +++ trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S   [iso-8859-1] Sat Oct 19 11:33:34 2013
>>  <at>  <at>  -241,6 +241,7  <at>  <at> 
>>  #define KI_EXIT_RET           HEX(080)
>>  #define KI_EXIT_IRET          HEX(100)
>>  #define KI_EDITED_FRAME       HEX(200)
>> +#define KI_EXIT_RET8          HEX(400)
>>  #define KI_RESTORE_VOLATILES  (KI_RESTORE_EAX OR KI_RESTORE_ECX_EDX)
>>
>>  MACRO(KiTrapExitStub, Name, Flags)
>>  <at>  <at>  -248,15 +249,15  <at>  <at> 
>>  PUBLIC  <at> &Name& <at> 4
>>   <at> &Name& <at> 4:
>>
>> -    if (Flags AND KI_RESTORE_EFLAGS)
>> +    if (Flags AND KI_EXIT_RET8) OR (Flags AND KI_EXIT_IRET)
>> +
>> +        /* This is the IRET frame */
>> +        OffsetEsp = KTRAP_FRAME_EIP
>> +
>> +    elseif (Flags AND KI_RESTORE_EFLAGS)
>>
>>          /* We will pop EFlags off the stack */
>>          OffsetEsp = KTRAP_FRAME_EFLAGS
>> -
>> -    elseif (Flags AND KI_EXIT_IRET)
>> -
>> -        /* This is the IRET frame */
>> -        OffsetEsp = KTRAP_FRAME_EIP
>>
>>      else
>>
>>  <at>  <at>  -335,6 +336,13  <at>  <at> 
>>
>>      if (Flags AND KI_RESTORE_EFLAGS)
>>
>> +        if (Flags AND KI_EXIT_RET8)
>> +
>> +            /* We are at the IRET frame, so push EFLAGS first */
>> +            push dword ptr [esp + 8]
>> +
>> +        endif
>> +
>>          /* Restore EFLAGS */
>>          popfd
>>
>>  <at>  <at>  -357,6 +365,11  <at>  <at> 
>>          /* Return to kernel mode with a jmp */
>>          jmp edx
>>
>> +    elseif (Flags AND KI_EXIT_RET8)
>> +
>> +        /* Return to kernel mode with a ret 8 */
>> +        ret 8
>> +
>>      elseif (Flags AND KI_EXIT_RET)
>>
>>          /* Return to kernel mode with a ret */
>>
>> Modified: trunk/reactos/ntoskrnl/include/internal/i386/ke.h
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/i386/ke.h?rev=60701&r1=60700&r2=60701&view=diff
>> ==============================================================================
>> --- trunk/reactos/ntoskrnl/include/internal/i386/ke.h [iso-8859-1] (original)
>> +++ trunk/reactos/ntoskrnl/include/internal/i386/ke.h [iso-8859-1] Sat Oct 19 11:33:34 2013
>>  <at>  <at>  -383,13 +383,13  <at>  <at> 
>>  ULONG_PTR
>>  NTAPI
>>  Ki386EnableGlobalPage(
>> -    IN volatile ULONG_PTR Context
>> +    IN ULONG_PTR Context
>>  );
>>
>>  ULONG_PTR
>>  NTAPI
>>  Ki386EnableTargetLargePage(
>> -    IN volatile ULONG_PTR Context
>> +    IN ULONG_PTR Context
>>  );
>>
>>  BOOLEAN
>>
>> Modified: trunk/reactos/ntoskrnl/include/internal/i386/trap_x.h
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/i386/trap_x.h?rev=60701&r1=60700&r2=60701&view=diff
>> ==============================================================================
>> --- trunk/reactos/ntoskrnl/include/internal/i386/trap_x.h     [iso-8859-1] (original)
>> +++ trunk/reactos/ntoskrnl/include/internal/i386/trap_x.h     [iso-8859-1] Sat Oct 19 11:33:34 2013
>>  <at>  <at>  -163,7 +163,7  <at>  <at> 
>>      }
>>
>>      /* Check DR values */
>> -    if (TrapFrame->SegCs & MODE_MASK)
>> +    if (KiUserTrap(TrapFrame)
>>      {
>>          /* Check for active debugging */
>>          if (KeGetCurrentThread()->Header.DebugActive)
>>  <at>  <at>  -244,6 +244,7  <at>  <at> 
>>  DECLSPEC_NORETURN VOID FASTCALL KiEditedTrapReturn(IN PKTRAP_FRAME TrapFrame);
>>  DECLSPEC_NORETURN VOID FASTCALL KiTrapReturn(IN PKTRAP_FRAME TrapFrame);
>>  DECLSPEC_NORETURN VOID FASTCALL KiTrapReturnNoSegments(IN PKTRAP_FRAME TrapFrame);
>> +DECLSPEC_NORETURN VOID FASTCALL KiTrapReturnNoSegmentsRet8(IN PKTRAP_FRAME TrapFrame);
>>
>>  typedef
>>  ATTRIB_NORETURN
>>  <at>  <at>  -382,7 +383,7  <at>  <at> 
>>      TrapFrame->Dr7 = 0;
>>
>>      /* Check if the frame was from user mode or v86 mode */
>> -    if ((TrapFrame->SegCs & MODE_MASK) ||
>> +    if (KiUserTrap(TrapFrame) ||
>>          (TrapFrame->EFlags & EFLAGS_V86_MASK))
>>      {
>>          /* Check for active debugging */
>>  <at>  <at>  -411,7 +412,7  <at>  <at> 
>>      TrapFrame->Dr7 = 0;
>>
>>      /* Check if the frame was from user mode or v86 mode */
>> -    if ((TrapFrame->SegCs & MODE_MASK) ||
>> +    if (KiUserTrap(TrapFrame) ||
>>          (TrapFrame->EFlags & EFLAGS_V86_MASK))
>>      {
>>          /* Check for active debugging */
>>
>> Modified: trunk/reactos/ntoskrnl/ke/i386/cpu.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/cpu.c?rev=60701&r1=60700&r2=60701&view=diff
>> ==============================================================================
>> --- trunk/reactos/ntoskrnl/ke/i386/cpu.c      [iso-8859-1] (original)
>> +++ trunk/reactos/ntoskrnl/ke/i386/cpu.c      [iso-8859-1] Sat Oct 19 11:33:34 2013
>>  <at>  <at>  -1535,7 +1535,7  <at>  <at> 
>>      if (TargetAffinity)
>>      {
>>          /* Sanity check */
>> -        ASSERT(Prcb == (volatile PKPRCB)KeGetCurrentPrcb());
>> +        ASSERT(Prcb == KeGetCurrentPrcb());
>>
>>          /* FIXME: TODO */
>>          ASSERTMSG("Not yet implemented\n", FALSE);
>>
>> Modified: trunk/reactos/ntoskrnl/ke/i386/exp.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/exp.c?rev=60701&r1=60700&r2=60701&view=diff
>> ==============================================================================
>> --- trunk/reactos/ntoskrnl/ke/i386/exp.c      [iso-8859-1] (original)
>> +++ trunk/reactos/ntoskrnl/ke/i386/exp.c      [iso-8859-1] Sat Oct 19 11:33:34 2013
>>  <at>  <at>  -137,7 +137,7  <at>  <at> 
>>  KiEspFromTrapFrame(IN PKTRAP_FRAME TrapFrame)
>>  {
>>      /* Check if this is user-mode or V86 */
>> -    if ((TrapFrame->SegCs & MODE_MASK) ||
>> +    if (KiUserTrap(TrapFrame) ||
>>          (TrapFrame->EFlags & EFLAGS_V86_MASK))
>>      {
>>          /* Return it directly */
>>  <at>  <at>  -175,7 +175,7  <at>  <at> 
>>      Previous = KiEspFromTrapFrame(TrapFrame);
>>
>>      /* Check if this is user-mode or V86 */
>> -    if ((TrapFrame->SegCs & MODE_MASK) ||
>> +    if (KiUserTrap(TrapFrame) ||
>>          (TrapFrame->EFlags & EFLAGS_V86_MASK))
>>      {
>>          /* Write it directly */
>>  <at>  <at>  -225,7 +225,7  <at>  <at> 
>>          /* Just return it */
>>          return TrapFrame->HardwareSegSs;
>>      }
>> -    else if (TrapFrame->SegCs & MODE_MASK)
>> +    else if (KiUserTrap(TrapFrame))
>>      {
>>          /* User mode, return the User SS */
>>          return TrapFrame->HardwareSegSs | RPL_MASK;
>>  <at>  <at>  -251,7 +251,7  <at>  <at> 
>>          /* Just write it */
>>          TrapFrame->HardwareSegSs = Ss;
>>      }
>> -    else if (TrapFrame->SegCs & MODE_MASK)
>> +    else if (KiUserTrap(TrapFrame))
>>      {
>>          /* Usermode, save the User SS */
>>          TrapFrame->HardwareSegSs = Ss | RPL_MASK;
>>  <at>  <at>  -398,7 +398,7  <at>  <at> 
>>              TrapFrame->V86Fs = Context->SegFs;
>>              TrapFrame->V86Gs = Context->SegGs;
>>          }
>> -        else if (!(TrapFrame->SegCs & MODE_MASK))
>> +        else if (!KiUserTrap(TrapFrame))
>>          {
>>              /* For kernel mode, write the standard values */
>>              TrapFrame->SegDs = KGDT_R3_DATA | RPL_MASK;
>>  <at>  <at>  -429,7 +429,7  <at>  <at> 
>>
>>      /* Handle the extended registers */
>>      if (((ContextFlags & CONTEXT_EXTENDED_REGISTERS) ==
>> -        CONTEXT_EXTENDED_REGISTERS) && (TrapFrame->SegCs & MODE_MASK))
>> +        CONTEXT_EXTENDED_REGISTERS) && KiUserTrap(TrapFrame))
>>      {
>>          /* Get the FX Area */
>>          FxSaveArea = (PFX_SAVE_AREA)(TrapFrame + 1);
>>  <at>  <at>  -463,7 +463,7  <at>  <at> 
>>
>>      /* Handle the floating point state */
>>      if (((ContextFlags & CONTEXT_FLOATING_POINT) ==
>> -        CONTEXT_FLOATING_POINT) && (TrapFrame->SegCs & MODE_MASK))
>> +        CONTEXT_FLOATING_POINT) && KiUserTrap(TrapFrame))
>>      {
>>          /* Get the FX Area */
>>          FxSaveArea = (PFX_SAVE_AREA)(TrapFrame + 1);
>>  <at>  <at>  -692,7 +692,7  <at>  <at> 
>>
>>      /* Handle extended registers */
>>      if (((Context->ContextFlags & CONTEXT_EXTENDED_REGISTERS) ==
>> -        CONTEXT_EXTENDED_REGISTERS) && (TrapFrame->SegCs & MODE_MASK))
>> +        CONTEXT_EXTENDED_REGISTERS) && KiUserTrap(TrapFrame))
>>      {
>>          /* Get the FX Save Area */
>>          FxSaveArea = (PFX_SAVE_AREA)(TrapFrame + 1);
>>  <at>  <at>  -712,7 +712,7  <at>  <at> 
>>
>>      /* Handle Floating Point */
>>      if (((Context->ContextFlags & CONTEXT_FLOATING_POINT) ==
>> -        CONTEXT_FLOATING_POINT) && (TrapFrame->SegCs & MODE_MASK))
>> +        CONTEXT_FLOATING_POINT) && KiUserTrap(TrapFrame))
>>      {
>>          /* Get the FX Save Area */
>>          FxSaveArea = (PFX_SAVE_AREA)(TrapFrame + 1);
>>  <at>  <at>  -1045,6 +1045,13  <at>  <at> 
>>                  }
>>              }
>>              _SEH2_END;
>> +
>> +            DPRINT("First chance exception in %.16s, ExceptionCode: %lx, ExceptionAddress: %p, P0: %lx, P1: %lx\n",
>> +                   PsGetCurrentProcess()->ImageFileName,
>> +                   ExceptionRecord->ExceptionCode,
>> +                   ExceptionRecord->ExceptionAddress,
>> +                   ExceptionRecord->ExceptionInformation[0],
>> +                   ExceptionRecord->ExceptionInformation[1]);
>>          }
>>
>>          /* Try second chance */
>>  <at>  <at>  -1060,11 +1067,13  <at>  <at> 
>>          }
>>
>>          /* 3rd strike, kill the process */
>> -        DPRINT1("Kill %.16s, ExceptionCode: %lx, ExceptionAddress: %p, BaseAddress: %p\n",
>> +        DPRINT1("Kill %.16s, ExceptionCode: %lx, ExceptionAddress: %p, BaseAddress: %p, P0: %lx, P1: %lx\n",
>>                  PsGetCurrentProcess()->ImageFileName,
>>                  ExceptionRecord->ExceptionCode,
>>                  ExceptionRecord->ExceptionAddress,
>> -                PsGetCurrentProcess()->SectionBaseAddress);
>> +                PsGetCurrentProcess()->SectionBaseAddress,
>> +                ExceptionRecord->ExceptionInformation[0],
>> +                ExceptionRecord->ExceptionInformation[1]);
>>
>>          ZwTerminateProcess(NtCurrentProcess(), ExceptionRecord->ExceptionCode);
>>          KeBugCheckEx(KMODE_EXCEPTION_NOT_HANDLED,
>>
>> Modified: trunk/reactos/ntoskrnl/ke/i386/patpge.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/patpge.c?rev=60701&r1=60700&r2=60701&view=diff
>> ==============================================================================
>> --- trunk/reactos/ntoskrnl/ke/i386/patpge.c   [iso-8859-1] (original)
>> +++ trunk/reactos/ntoskrnl/ke/i386/patpge.c   [iso-8859-1] Sat Oct 19 11:33:34 2013
>>  <at>  <at>  -20,9 +20,9  <at>  <at> 
>>  ULONG_PTR
>>  NTAPI
>>  INIT_FUNCTION
>> -Ki386EnableGlobalPage(IN volatile ULONG_PTR Context)
>> -{
>> -    volatile PLONG Count = (PLONG)Context;
>> +Ki386EnableGlobalPage(IN ULONG_PTR Context)
>> +{
>> +    PLONG Count = (PLONG)Context;
>>      ULONG Cr4, Cr3;
>>
>>      /* Disable interrupts */
>>  <at>  <at>  -144,7 +144,7  <at>  <at> 
>>          if (PageTable)
>>              *PageTable = (PHARDWARE_PTE)(Pde->PageFrameNumber << PAGE_SHIFT);
>>      }
>> -
>> +
>>      return TRUE;
>>  }
>>
>>  <at>  <at>  -172,7 +172,7  <at>  <at> 
>>      /* Get PTE of VirtualPtr, make it valid, and map PhysicalPtr there */
>>      Pte = &PageTable[(VirtualPtr >> 12) & ((1 << PTE_BITS) - 1)];
>>      Pte->Valid = 1;
>> -    Pte->PageFrameNumber = PhysicalPtr.QuadPart >> PAGE_SHIFT;
>> +    Pte->PageFrameNumber = (PFN_NUMBER)(PhysicalPtr.QuadPart >> PAGE_SHIFT);
>>
>>      return TRUE;
>>  }
>>  <at>  <at>  -189,7 +189,7  <at>  <at> 
>>      PhysicalPtr = MmGetPhysicalAddress(VirtualPtr);
>>
>>      /* Map its physical address in the page table provided by the caller */
>> -    Pte->PageFrameNumber = PhysicalPtr.QuadPart >> PAGE_SHIFT;
>> +    Pte->PageFrameNumber = (PFN_NUMBER)(PhysicalPtr.QuadPart >> PAGE_SHIFT);
>>  }
>>
>>  BOOLEAN
>>
>> Modified: trunk/reactos/ntoskrnl/ke/i386/trap.s
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/trap.s?rev=60701&r1=60700&r2=60701&view=diff
>> ==============================================================================
>> --- trunk/reactos/ntoskrnl/ke/i386/trap.s     [iso-8859-1] (original)
>> +++ trunk/reactos/ntoskrnl/ke/i386/trap.s     [iso-8859-1] Sat Oct 19 11:33:34 2013
>>  <at>  <at>  -166,6 +166,7  <at>  <at> 
>>  KiTrapExitStub KiEditedTrapReturn,        (KI_RESTORE_VOLATILES OR KI_RESTORE_EFLAGS OR
KI_EDITED_FRAME OR KI_EXIT_RET)
>>  KiTrapExitStub KiTrapReturn,              (KI_RESTORE_VOLATILES OR KI_RESTORE_SEGMENTS OR KI_EXIT_IRET)
>>  KiTrapExitStub KiTrapReturnNoSegments,    (KI_RESTORE_VOLATILES OR KI_EXIT_IRET)
>> +KiTrapExitStub KiTrapReturnNoSegmentsRet8,(KI_RESTORE_VOLATILES OR KI_RESTORE_EFLAGS OR KI_EXIT_RET8)
>>
>>  #ifdef _MSC_VER
>>  EXTERN _PsConvertToGuiThread <at> 0:PROC
>>
>> Modified: trunk/reactos/ntoskrnl/ke/i386/traphdlr.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/traphdlr.c?rev=60701&r1=60700&r2=60701&view=diff
>> ==============================================================================
>> --- trunk/reactos/ntoskrnl/ke/i386/traphdlr.c [iso-8859-1] (original)
>> +++ trunk/reactos/ntoskrnl/ke/i386/traphdlr.c [iso-8859-1] Sat Oct 19 11:33:34 2013
>>  <at>  <at>  -100,7 +100,7  <at>  <at> 
>>      if (__builtin_expect(TrapFrame->Dr7 & ~DR7_RESERVED_MASK, 0))
>>      {
>>          /* Check if the frame was from user mode or v86 mode */
>> -        if ((TrapFrame->SegCs & MODE_MASK) ||
>> +        if (KiUserTrap(TrapFrame) ||
>>              (TrapFrame->EFlags & EFLAGS_V86_MASK))
>>          {
>>              /* Handle debug registers */
>>  <at>  <at>  -124,13 +124,13  <at>  <at> 
>>      if (TrapFrame->EFlags & EFLAGS_V86_MASK) KiTrapReturnNoSegments(TrapFrame);
>>
>>      /* Check for user mode exit */
>> -    if (TrapFrame->SegCs & MODE_MASK) KiTrapReturn(TrapFrame);
>> +    if (KiUserTrap(TrapFrame)) KiTrapReturn(TrapFrame);
>>
>>      /* Check for edited frame */
>>      if (KiIsFrameEdited(TrapFrame)) KiEditedTrapReturn(TrapFrame);
>>
>>      /* Exit the trap to kernel mode */
>> -    KiTrapReturnNoSegments(TrapFrame);
>> +    KiTrapReturnNoSegmentsRet8(TrapFrame);
>>  }
>>
>>  DECLSPEC_NORETURN
>>  <at>  <at>  -152,7 +152,7  <at>  <at> 
>>      KeGetCurrentThread()->PreviousMode = (CCHAR)TrapFrame->PreviousPreviousMode;
>>
>>      /* Check for user mode exit */
>> -    if (TrapFrame->SegCs & MODE_MASK)
>> +    if (KiUserTrap(TrapFrame))
>>      {
>>          /* Check if we were single stepping */
>>          if (TrapFrame->EFlags & EFLAGS_TF)
>>  <at>  <at>  -186,13 +186,13  <at>  <at> 
>>      if (TrapFrame->EFlags & EFLAGS_V86_MASK) KiTrapReturnNoSegments(TrapFrame);
>>
>>      /* Check for user mode exit */
>> -    if (TrapFrame->SegCs & MODE_MASK) KiTrapReturn(TrapFrame);
>> +    if (KiUserTrap(TrapFrame)) KiTrapReturn(TrapFrame);
>>
>>      /* Check for edited frame */
>>      if (KiIsFrameEdited(TrapFrame)) KiEditedTrapReturn(TrapFrame);
>>
>>      /* Exit the trap to kernel mode */
>> -    KiTrapReturnNoSegments(TrapFrame);
>> +    KiTrapReturnNoSegmentsRet8(TrapFrame);
>>  }
>>
>>
>>  <at>  <at>  -1250,10 +1250,10  <at>  <at> 
>>      /* Call the access fault handler */
>>      Status = MmAccessFault(TrapFrame->ErrCode & 1,
>>                             (PVOID)Cr2,
>> -                           TrapFrame->SegCs & MODE_MASK,
>> +                           KiUserTrap(TrapFrame),
>>                             TrapFrame);
>>      if (NT_SUCCESS(Status)) KiEoiHelper(TrapFrame);
>> -
>> +
>>      /* Check for syscall fault */
>>  #if 0
>>      if ((TrapFrame->Eip == (ULONG_PTR)CopyParams) ||
>>  <at>  <at>  -1541,7 +1541,7  <at>  <at> 
>>      TrapFrame->Dr7 = 0;
>>
>>      /* Check if the frame was from user mode */
>> -    if (TrapFrame->SegCs & MODE_MASK)
>> +    if (KiUserTrap(TrapFrame))
>>      {
>>          /* Check for active debugging */
>>          if (KeGetCurrentThread()->Header.DebugActive & 0xFF)
>>
>> Modified: trunk/reactos/ntoskrnl/ke/i386/usercall.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/usercall.c?rev=60701&r1=60700&r2=60701&view=diff
>> ==============================================================================
>> --- trunk/reactos/ntoskrnl/ke/i386/usercall.c [iso-8859-1] (original)
>> +++ trunk/reactos/ntoskrnl/ke/i386/usercall.c [iso-8859-1] Sat Oct 19 11:33:34 2013
>>  <at>  <at>  -67,7 +67,7  <at>  <at> 
>>      _SEH2_TRY
>>      {
>>          /* Sanity check */
>> -        ASSERT((TrapFrame->SegCs & MODE_MASK) != KernelMode);
>> +        ASSERT(KiUserTrap(TrapFrame));
>>
>>          /* Get the aligned size */
>>          AlignedEsp = Context.Esp & ~3;
>>  <at>  <at>  -210,7 +210,7  <at>  <at> 
>>  }
>>
>>
>> -/*
>> +/*
>>   * Stack layout for KiUserModeCallout:
>>   * ----------------------------------
>>   * KCALLOUT_FRAME.ResultLength    <= 2nd Parameter to KiCallUserMode
>>
>> Modified: trunk/reactos/ntoskrnl/ke/time.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/time.c?rev=60701&r1=60700&r2=60701&view=diff
>> ==============================================================================
>> --- trunk/reactos/ntoskrnl/ke/time.c  [iso-8859-1] (original)
>> +++ trunk/reactos/ntoskrnl/ke/time.c  [iso-8859-1] Sat Oct 19 11:33:34 2013
>>  <at>  <at>  -153,7 +153,7  <at>  <at> 
>>
>>      /* Check if we came from user mode */
>>  #ifndef _M_ARM
>> -    if ((TrapFrame->SegCs & MODE_MASK) || (TrapFrame->EFlags & EFLAGS_V86_MASK))
>> +    if (KiUserTrap(TrapFrame) || (TrapFrame->EFlags & EFLAGS_V86_MASK))
>>  #else
>>      if (TrapFrame->PreviousMode == UserMode)
>>  #endif
>>
>>
>
>
> _______________________________________________
> Ros-dev mailing list
> Ros-dev@...
> http://www.reactos.org/mailman/listinfo/ros-dev
Alex Ionescu | 14 Apr 19:33 2016
Picon

Re: ReactOS SVN Version Naming

Are you equally confused when Windows 10 Anniversary Update preview
builds also present themselves as such, even though it'snot coming out
until later?
Best regards,
Alex Ionescu

On Wed, Apr 13, 2016 at 9:31 AM, Javier Agustìn Fernàndez Arroyo
<elhoir <at> gmail.com> wrote:
> what about changing "-" by "+"?
>
> "0.4+SVNx"
> that would mean, "this is the 0.4. version, plus svn revisions until x"
>
>
> On Sun, Apr 10, 2016 at 11:25 PM, Mark Jansen <learn0more+ros <at> gmail.com>
> wrote:
>>
>>
>>
>> This way of numbering seems very confusing to me, and I assume to other
>> people as well..
>> When ReactOS presents itself as 0.5-SVN, I would expect this to be a 0.5
>> release, and not a 0.4 release that is working towards a 0.5.
>>
>>
>> regards,
>>
>> Mark
>>
>>
>> PS: I wasn't subscribed at the time this was sent, so sending a 'fake'
>> reply :)
>>
>>
>>> Ged Murphy gedmurphy.maillists at gmail.com
>>> Mon Feb 29 16:07:49 UTC 2016
>>>
>>> Because that’s what is being worked towards now, and there will be an
>>> unknown number of point releases until it’s reached.
>>>
>>> It’s also a bit of nostalgia, it’s what we’ve always done :)
>>>
>>>
>>>
>>>> From: Ros-dev [mailto:ros-dev-bounces at reactos.org] On Behalf Of
>>>> Hermès
>>>> BÉLUSCA - MAÏTO
>>>> Sent: 29 February 2016 16:00
>>>> To: ReactOS Development List <ros-dev at reactos.org>
>>>> Subject: [ros-dev] ReactOS SVN version naming
>>>>
>>>> Hi guys,
>>>>
>>>> I would like to understand what’s the rationale behind changing the
>>>> ReactOS
>>>> trunk version from “0.4-SVN” to “0.5-SVN” (see revision 70818) whereas
>>>> we
>>>> have just started to release ROS 0.4.0 only?
>>>>
>>>> Thanks in advance for your explanations!
>>>>
>>>> Cheers,
>>>> Hermès.
>>
>>
>> _______________________________________________
>> Ros-dev mailing list
>> Ros-dev <at> reactos.org
>> http://www.reactos.org/mailman/listinfo/ros-dev
>
>
>
> _______________________________________________
> Ros-dev mailing list
> Ros-dev <at> reactos.org
> http://www.reactos.org/mailman/listinfo/ros-dev
>

_______________________________________________
Ros-dev mailing list
Ros-dev <at> reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev
Thomas Faber | 14 Apr 17:09 2016

Re: [ros-diffs] [tkreuzer] 60701: [NTOSKRNL] - Introduce a new and faster way to return to kernel mode from traps by using a ret 8 instruction instead of an iret. - Make use of KiUserTrap where appropriate - Remov...

Looks like we've encountered an issue with this
KiTrapReturnNoSegmentsRet8 approach. As seen in
https://jira.reactos.org/browse/CORE-11115, when a large number of
interrupts happen, this will cause us to run out of kernel stack.

Since the popfd / ret 8 steps do not happen atomically, interrupts will
be re-enabled before those 12 bytes of stack are freed, thus many of
them happening in a row will cause us to run out.

Thoughts?

Thanks!
-Thomas

On 2013-10-19 13:33, tkreuzer@... wrote:
> Author: tkreuzer
> Date: Sat Oct 19 11:33:34 2013
> New Revision: 60701
> 
> URL: http://svn.reactos.org/svn/reactos?rev=60701&view=rev
> Log:
> [NTOSKRNL]
> - Introduce a new and faster way to return to kernel mode from traps by using a ret 8 instruction instead of an iret.
> - Make use of KiUserTrap where appropriate
> - Remove some pointless toplevel volatile
> 
> Modified:
>     trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S
>     trunk/reactos/ntoskrnl/include/internal/i386/ke.h
>     trunk/reactos/ntoskrnl/include/internal/i386/trap_x.h
>     trunk/reactos/ntoskrnl/ke/i386/cpu.c
>     trunk/reactos/ntoskrnl/ke/i386/exp.c
>     trunk/reactos/ntoskrnl/ke/i386/patpge.c
>     trunk/reactos/ntoskrnl/ke/i386/trap.s
>     trunk/reactos/ntoskrnl/ke/i386/traphdlr.c
>     trunk/reactos/ntoskrnl/ke/i386/usercall.c
>     trunk/reactos/ntoskrnl/ke/time.c
> 
> Modified: trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S
> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S?rev=60701&r1=60700&r2=60701&view=diff
> ==============================================================================
> --- trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S	[iso-8859-1] (original)
> +++ trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S	[iso-8859-1] Sat Oct 19 11:33:34 2013
>  <at>  <at>  -241,6 +241,7  <at>  <at> 
>  #define KI_EXIT_RET           HEX(080)
>  #define KI_EXIT_IRET          HEX(100)
>  #define KI_EDITED_FRAME       HEX(200)
> +#define KI_EXIT_RET8          HEX(400)
>  #define KI_RESTORE_VOLATILES  (KI_RESTORE_EAX OR KI_RESTORE_ECX_EDX)
>  
>  MACRO(KiTrapExitStub, Name, Flags)
>  <at>  <at>  -248,15 +249,15  <at>  <at> 
>  PUBLIC  <at> &Name& <at> 4
>   <at> &Name& <at> 4:
>  
> -    if (Flags AND KI_RESTORE_EFLAGS)
> +    if (Flags AND KI_EXIT_RET8) OR (Flags AND KI_EXIT_IRET)
> +
> +        /* This is the IRET frame */
> +        OffsetEsp = KTRAP_FRAME_EIP
> +
> +    elseif (Flags AND KI_RESTORE_EFLAGS)
>  
>          /* We will pop EFlags off the stack */
>          OffsetEsp = KTRAP_FRAME_EFLAGS
> -
> -    elseif (Flags AND KI_EXIT_IRET)
> -
> -        /* This is the IRET frame */
> -        OffsetEsp = KTRAP_FRAME_EIP
>  
>      else
>  
>  <at>  <at>  -335,6 +336,13  <at>  <at> 
>  
>      if (Flags AND KI_RESTORE_EFLAGS)
>  
> +        if (Flags AND KI_EXIT_RET8)
> +
> +            /* We are at the IRET frame, so push EFLAGS first */
> +            push dword ptr [esp + 8]
> +
> +        endif
> +
>          /* Restore EFLAGS */
>          popfd
>  
>  <at>  <at>  -357,6 +365,11  <at>  <at> 
>          /* Return to kernel mode with a jmp */
>          jmp edx
>  
> +    elseif (Flags AND KI_EXIT_RET8)
> +
> +        /* Return to kernel mode with a ret 8 */
> +        ret 8
> +
>      elseif (Flags AND KI_EXIT_RET)
>  
>          /* Return to kernel mode with a ret */
> 
> Modified: trunk/reactos/ntoskrnl/include/internal/i386/ke.h
> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/i386/ke.h?rev=60701&r1=60700&r2=60701&view=diff
> ==============================================================================
> --- trunk/reactos/ntoskrnl/include/internal/i386/ke.h	[iso-8859-1] (original)
> +++ trunk/reactos/ntoskrnl/include/internal/i386/ke.h	[iso-8859-1] Sat Oct 19 11:33:34 2013
>  <at>  <at>  -383,13 +383,13  <at>  <at> 
>  ULONG_PTR
>  NTAPI
>  Ki386EnableGlobalPage(
> -    IN volatile ULONG_PTR Context
> +    IN ULONG_PTR Context
>  );
>  
>  ULONG_PTR
>  NTAPI
>  Ki386EnableTargetLargePage(
> -    IN volatile ULONG_PTR Context
> +    IN ULONG_PTR Context
>  );
>  
>  BOOLEAN
> 
> Modified: trunk/reactos/ntoskrnl/include/internal/i386/trap_x.h
> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/i386/trap_x.h?rev=60701&r1=60700&r2=60701&view=diff
> ==============================================================================
> --- trunk/reactos/ntoskrnl/include/internal/i386/trap_x.h	[iso-8859-1] (original)
> +++ trunk/reactos/ntoskrnl/include/internal/i386/trap_x.h	[iso-8859-1] Sat Oct 19 11:33:34 2013
>  <at>  <at>  -163,7 +163,7  <at>  <at> 
>      }
>  
>      /* Check DR values */
> -    if (TrapFrame->SegCs & MODE_MASK)
> +    if (KiUserTrap(TrapFrame)
>      {
>          /* Check for active debugging */
>          if (KeGetCurrentThread()->Header.DebugActive)
>  <at>  <at>  -244,6 +244,7  <at>  <at> 
>  DECLSPEC_NORETURN VOID FASTCALL KiEditedTrapReturn(IN PKTRAP_FRAME TrapFrame);
>  DECLSPEC_NORETURN VOID FASTCALL KiTrapReturn(IN PKTRAP_FRAME TrapFrame);
>  DECLSPEC_NORETURN VOID FASTCALL KiTrapReturnNoSegments(IN PKTRAP_FRAME TrapFrame);
> +DECLSPEC_NORETURN VOID FASTCALL KiTrapReturnNoSegmentsRet8(IN PKTRAP_FRAME TrapFrame);
>  
>  typedef
>  ATTRIB_NORETURN
>  <at>  <at>  -382,7 +383,7  <at>  <at> 
>      TrapFrame->Dr7 = 0;
>  
>      /* Check if the frame was from user mode or v86 mode */
> -    if ((TrapFrame->SegCs & MODE_MASK) ||
> +    if (KiUserTrap(TrapFrame) ||
>          (TrapFrame->EFlags & EFLAGS_V86_MASK))
>      {
>          /* Check for active debugging */
>  <at>  <at>  -411,7 +412,7  <at>  <at> 
>      TrapFrame->Dr7 = 0;
>  
>      /* Check if the frame was from user mode or v86 mode */
> -    if ((TrapFrame->SegCs & MODE_MASK) ||
> +    if (KiUserTrap(TrapFrame) ||
>          (TrapFrame->EFlags & EFLAGS_V86_MASK))
>      {
>          /* Check for active debugging */
> 
> Modified: trunk/reactos/ntoskrnl/ke/i386/cpu.c
> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/cpu.c?rev=60701&r1=60700&r2=60701&view=diff
> ==============================================================================
> --- trunk/reactos/ntoskrnl/ke/i386/cpu.c	[iso-8859-1] (original)
> +++ trunk/reactos/ntoskrnl/ke/i386/cpu.c	[iso-8859-1] Sat Oct 19 11:33:34 2013
>  <at>  <at>  -1535,7 +1535,7  <at>  <at> 
>      if (TargetAffinity)
>      {
>          /* Sanity check */
> -        ASSERT(Prcb == (volatile PKPRCB)KeGetCurrentPrcb());
> +        ASSERT(Prcb == KeGetCurrentPrcb());
>  
>          /* FIXME: TODO */
>          ASSERTMSG("Not yet implemented\n", FALSE);
> 
> Modified: trunk/reactos/ntoskrnl/ke/i386/exp.c
> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/exp.c?rev=60701&r1=60700&r2=60701&view=diff
> ==============================================================================
> --- trunk/reactos/ntoskrnl/ke/i386/exp.c	[iso-8859-1] (original)
> +++ trunk/reactos/ntoskrnl/ke/i386/exp.c	[iso-8859-1] Sat Oct 19 11:33:34 2013
>  <at>  <at>  -137,7 +137,7  <at>  <at> 
>  KiEspFromTrapFrame(IN PKTRAP_FRAME TrapFrame)
>  {
>      /* Check if this is user-mode or V86 */
> -    if ((TrapFrame->SegCs & MODE_MASK) ||
> +    if (KiUserTrap(TrapFrame) ||
>          (TrapFrame->EFlags & EFLAGS_V86_MASK))
>      {
>          /* Return it directly */
>  <at>  <at>  -175,7 +175,7  <at>  <at> 
>      Previous = KiEspFromTrapFrame(TrapFrame);
>  
>      /* Check if this is user-mode or V86 */
> -    if ((TrapFrame->SegCs & MODE_MASK) ||
> +    if (KiUserTrap(TrapFrame) ||
>          (TrapFrame->EFlags & EFLAGS_V86_MASK))
>      {
>          /* Write it directly */
>  <at>  <at>  -225,7 +225,7  <at>  <at> 
>          /* Just return it */
>          return TrapFrame->HardwareSegSs;
>      }
> -    else if (TrapFrame->SegCs & MODE_MASK)
> +    else if (KiUserTrap(TrapFrame))
>      {
>          /* User mode, return the User SS */
>          return TrapFrame->HardwareSegSs | RPL_MASK;
>  <at>  <at>  -251,7 +251,7  <at>  <at> 
>          /* Just write it */
>          TrapFrame->HardwareSegSs = Ss;
>      }
> -    else if (TrapFrame->SegCs & MODE_MASK)
> +    else if (KiUserTrap(TrapFrame))
>      {
>          /* Usermode, save the User SS */
>          TrapFrame->HardwareSegSs = Ss | RPL_MASK;
>  <at>  <at>  -398,7 +398,7  <at>  <at> 
>              TrapFrame->V86Fs = Context->SegFs;
>              TrapFrame->V86Gs = Context->SegGs;
>          }
> -        else if (!(TrapFrame->SegCs & MODE_MASK))
> +        else if (!KiUserTrap(TrapFrame))
>          {
>              /* For kernel mode, write the standard values */
>              TrapFrame->SegDs = KGDT_R3_DATA | RPL_MASK;
>  <at>  <at>  -429,7 +429,7  <at>  <at> 
>  
>      /* Handle the extended registers */
>      if (((ContextFlags & CONTEXT_EXTENDED_REGISTERS) ==
> -        CONTEXT_EXTENDED_REGISTERS) && (TrapFrame->SegCs & MODE_MASK))
> +        CONTEXT_EXTENDED_REGISTERS) && KiUserTrap(TrapFrame))
>      {
>          /* Get the FX Area */
>          FxSaveArea = (PFX_SAVE_AREA)(TrapFrame + 1);
>  <at>  <at>  -463,7 +463,7  <at>  <at> 
>  
>      /* Handle the floating point state */
>      if (((ContextFlags & CONTEXT_FLOATING_POINT) ==
> -        CONTEXT_FLOATING_POINT) && (TrapFrame->SegCs & MODE_MASK))
> +        CONTEXT_FLOATING_POINT) && KiUserTrap(TrapFrame))
>      {
>          /* Get the FX Area */
>          FxSaveArea = (PFX_SAVE_AREA)(TrapFrame + 1);
>  <at>  <at>  -692,7 +692,7  <at>  <at> 
>  
>      /* Handle extended registers */
>      if (((Context->ContextFlags & CONTEXT_EXTENDED_REGISTERS) ==
> -        CONTEXT_EXTENDED_REGISTERS) && (TrapFrame->SegCs & MODE_MASK))
> +        CONTEXT_EXTENDED_REGISTERS) && KiUserTrap(TrapFrame))
>      {
>          /* Get the FX Save Area */
>          FxSaveArea = (PFX_SAVE_AREA)(TrapFrame + 1);
>  <at>  <at>  -712,7 +712,7  <at>  <at> 
>  
>      /* Handle Floating Point */
>      if (((Context->ContextFlags & CONTEXT_FLOATING_POINT) ==
> -        CONTEXT_FLOATING_POINT) && (TrapFrame->SegCs & MODE_MASK))
> +        CONTEXT_FLOATING_POINT) && KiUserTrap(TrapFrame))
>      {
>          /* Get the FX Save Area */
>          FxSaveArea = (PFX_SAVE_AREA)(TrapFrame + 1);
>  <at>  <at>  -1045,6 +1045,13  <at>  <at> 
>                  }
>              }
>              _SEH2_END;
> +
> +            DPRINT("First chance exception in %.16s, ExceptionCode: %lx, ExceptionAddress: %p, P0: %lx, P1: %lx\n",
> +                   PsGetCurrentProcess()->ImageFileName,
> +                   ExceptionRecord->ExceptionCode,
> +                   ExceptionRecord->ExceptionAddress,
> +                   ExceptionRecord->ExceptionInformation[0],
> +                   ExceptionRecord->ExceptionInformation[1]);
>          }
>  
>          /* Try second chance */
>  <at>  <at>  -1060,11 +1067,13  <at>  <at> 
>          }
>  
>          /* 3rd strike, kill the process */
> -        DPRINT1("Kill %.16s, ExceptionCode: %lx, ExceptionAddress: %p, BaseAddress: %p\n",
> +        DPRINT1("Kill %.16s, ExceptionCode: %lx, ExceptionAddress: %p, BaseAddress: %p, P0: %lx, P1: %lx\n",
>                  PsGetCurrentProcess()->ImageFileName,
>                  ExceptionRecord->ExceptionCode,
>                  ExceptionRecord->ExceptionAddress,
> -                PsGetCurrentProcess()->SectionBaseAddress);
> +                PsGetCurrentProcess()->SectionBaseAddress,
> +                ExceptionRecord->ExceptionInformation[0],
> +                ExceptionRecord->ExceptionInformation[1]);
>  
>          ZwTerminateProcess(NtCurrentProcess(), ExceptionRecord->ExceptionCode);
>          KeBugCheckEx(KMODE_EXCEPTION_NOT_HANDLED,
> 
> Modified: trunk/reactos/ntoskrnl/ke/i386/patpge.c
> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/patpge.c?rev=60701&r1=60700&r2=60701&view=diff
> ==============================================================================
> --- trunk/reactos/ntoskrnl/ke/i386/patpge.c	[iso-8859-1] (original)
> +++ trunk/reactos/ntoskrnl/ke/i386/patpge.c	[iso-8859-1] Sat Oct 19 11:33:34 2013
>  <at>  <at>  -20,9 +20,9  <at>  <at> 
>  ULONG_PTR
>  NTAPI
>  INIT_FUNCTION
> -Ki386EnableGlobalPage(IN volatile ULONG_PTR Context)
> -{
> -    volatile PLONG Count = (PLONG)Context;
> +Ki386EnableGlobalPage(IN ULONG_PTR Context)
> +{
> +    PLONG Count = (PLONG)Context;
>      ULONG Cr4, Cr3;
>  
>      /* Disable interrupts */
>  <at>  <at>  -144,7 +144,7  <at>  <at> 
>          if (PageTable)
>              *PageTable = (PHARDWARE_PTE)(Pde->PageFrameNumber << PAGE_SHIFT);
>      }
> -    
> +
>      return TRUE;
>  }
>  
>  <at>  <at>  -172,7 +172,7  <at>  <at> 
>      /* Get PTE of VirtualPtr, make it valid, and map PhysicalPtr there */
>      Pte = &PageTable[(VirtualPtr >> 12) & ((1 << PTE_BITS) - 1)];
>      Pte->Valid = 1;
> -    Pte->PageFrameNumber = PhysicalPtr.QuadPart >> PAGE_SHIFT;
> +    Pte->PageFrameNumber = (PFN_NUMBER)(PhysicalPtr.QuadPart >> PAGE_SHIFT);
>  
>      return TRUE;
>  }
>  <at>  <at>  -189,7 +189,7  <at>  <at> 
>      PhysicalPtr = MmGetPhysicalAddress(VirtualPtr);
>  
>      /* Map its physical address in the page table provided by the caller */
> -    Pte->PageFrameNumber = PhysicalPtr.QuadPart >> PAGE_SHIFT;
> +    Pte->PageFrameNumber = (PFN_NUMBER)(PhysicalPtr.QuadPart >> PAGE_SHIFT);
>  }
>  
>  BOOLEAN
> 
> Modified: trunk/reactos/ntoskrnl/ke/i386/trap.s
> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/trap.s?rev=60701&r1=60700&r2=60701&view=diff
> ==============================================================================
> --- trunk/reactos/ntoskrnl/ke/i386/trap.s	[iso-8859-1] (original)
> +++ trunk/reactos/ntoskrnl/ke/i386/trap.s	[iso-8859-1] Sat Oct 19 11:33:34 2013
>  <at>  <at>  -166,6 +166,7  <at>  <at> 
>  KiTrapExitStub KiEditedTrapReturn,        (KI_RESTORE_VOLATILES OR KI_RESTORE_EFLAGS OR
KI_EDITED_FRAME OR KI_EXIT_RET)
>  KiTrapExitStub KiTrapReturn,              (KI_RESTORE_VOLATILES OR KI_RESTORE_SEGMENTS OR KI_EXIT_IRET)
>  KiTrapExitStub KiTrapReturnNoSegments,    (KI_RESTORE_VOLATILES OR KI_EXIT_IRET)
> +KiTrapExitStub KiTrapReturnNoSegmentsRet8,(KI_RESTORE_VOLATILES OR KI_RESTORE_EFLAGS OR KI_EXIT_RET8)
>  
>  #ifdef _MSC_VER
>  EXTERN _PsConvertToGuiThread <at> 0:PROC
> 
> Modified: trunk/reactos/ntoskrnl/ke/i386/traphdlr.c
> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/traphdlr.c?rev=60701&r1=60700&r2=60701&view=diff
> ==============================================================================
> --- trunk/reactos/ntoskrnl/ke/i386/traphdlr.c	[iso-8859-1] (original)
> +++ trunk/reactos/ntoskrnl/ke/i386/traphdlr.c	[iso-8859-1] Sat Oct 19 11:33:34 2013
>  <at>  <at>  -100,7 +100,7  <at>  <at> 
>      if (__builtin_expect(TrapFrame->Dr7 & ~DR7_RESERVED_MASK, 0))
>      {
>          /* Check if the frame was from user mode or v86 mode */
> -        if ((TrapFrame->SegCs & MODE_MASK) ||
> +        if (KiUserTrap(TrapFrame) ||
>              (TrapFrame->EFlags & EFLAGS_V86_MASK))
>          {
>              /* Handle debug registers */
>  <at>  <at>  -124,13 +124,13  <at>  <at> 
>      if (TrapFrame->EFlags & EFLAGS_V86_MASK) KiTrapReturnNoSegments(TrapFrame);
>  
>      /* Check for user mode exit */
> -    if (TrapFrame->SegCs & MODE_MASK) KiTrapReturn(TrapFrame);
> +    if (KiUserTrap(TrapFrame)) KiTrapReturn(TrapFrame);
>  
>      /* Check for edited frame */
>      if (KiIsFrameEdited(TrapFrame)) KiEditedTrapReturn(TrapFrame);
>  
>      /* Exit the trap to kernel mode */
> -    KiTrapReturnNoSegments(TrapFrame);
> +    KiTrapReturnNoSegmentsRet8(TrapFrame);
>  }
>  
>  DECLSPEC_NORETURN
>  <at>  <at>  -152,7 +152,7  <at>  <at> 
>      KeGetCurrentThread()->PreviousMode = (CCHAR)TrapFrame->PreviousPreviousMode;
>  
>      /* Check for user mode exit */
> -    if (TrapFrame->SegCs & MODE_MASK)
> +    if (KiUserTrap(TrapFrame))
>      {
>          /* Check if we were single stepping */
>          if (TrapFrame->EFlags & EFLAGS_TF)
>  <at>  <at>  -186,13 +186,13  <at>  <at> 
>      if (TrapFrame->EFlags & EFLAGS_V86_MASK) KiTrapReturnNoSegments(TrapFrame);
>  
>      /* Check for user mode exit */
> -    if (TrapFrame->SegCs & MODE_MASK) KiTrapReturn(TrapFrame);
> +    if (KiUserTrap(TrapFrame)) KiTrapReturn(TrapFrame);
>  
>      /* Check for edited frame */
>      if (KiIsFrameEdited(TrapFrame)) KiEditedTrapReturn(TrapFrame);
>  
>      /* Exit the trap to kernel mode */
> -    KiTrapReturnNoSegments(TrapFrame);
> +    KiTrapReturnNoSegmentsRet8(TrapFrame);
>  }
>  
>  
>  <at>  <at>  -1250,10 +1250,10  <at>  <at> 
>      /* Call the access fault handler */
>      Status = MmAccessFault(TrapFrame->ErrCode & 1,
>                             (PVOID)Cr2,
> -                           TrapFrame->SegCs & MODE_MASK,
> +                           KiUserTrap(TrapFrame),
>                             TrapFrame);
>      if (NT_SUCCESS(Status)) KiEoiHelper(TrapFrame);
> -    
> +
>      /* Check for syscall fault */
>  #if 0
>      if ((TrapFrame->Eip == (ULONG_PTR)CopyParams) ||
>  <at>  <at>  -1541,7 +1541,7  <at>  <at> 
>      TrapFrame->Dr7 = 0;
>  
>      /* Check if the frame was from user mode */
> -    if (TrapFrame->SegCs & MODE_MASK)
> +    if (KiUserTrap(TrapFrame))
>      {
>          /* Check for active debugging */
>          if (KeGetCurrentThread()->Header.DebugActive & 0xFF)
> 
> Modified: trunk/reactos/ntoskrnl/ke/i386/usercall.c
> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/usercall.c?rev=60701&r1=60700&r2=60701&view=diff
> ==============================================================================
> --- trunk/reactos/ntoskrnl/ke/i386/usercall.c	[iso-8859-1] (original)
> +++ trunk/reactos/ntoskrnl/ke/i386/usercall.c	[iso-8859-1] Sat Oct 19 11:33:34 2013
>  <at>  <at>  -67,7 +67,7  <at>  <at> 
>      _SEH2_TRY
>      {
>          /* Sanity check */
> -        ASSERT((TrapFrame->SegCs & MODE_MASK) != KernelMode);
> +        ASSERT(KiUserTrap(TrapFrame));
>  
>          /* Get the aligned size */
>          AlignedEsp = Context.Esp & ~3;
>  <at>  <at>  -210,7 +210,7  <at>  <at> 
>  }
>  
>  
> -/* 
> +/*
>   * Stack layout for KiUserModeCallout:
>   * ----------------------------------
>   * KCALLOUT_FRAME.ResultLength    <= 2nd Parameter to KiCallUserMode
> 
> Modified: trunk/reactos/ntoskrnl/ke/time.c
> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/time.c?rev=60701&r1=60700&r2=60701&view=diff
> ==============================================================================
> --- trunk/reactos/ntoskrnl/ke/time.c	[iso-8859-1] (original)
> +++ trunk/reactos/ntoskrnl/ke/time.c	[iso-8859-1] Sat Oct 19 11:33:34 2013
>  <at>  <at>  -153,7 +153,7  <at>  <at> 
>  
>      /* Check if we came from user mode */
>  #ifndef _M_ARM
> -    if ((TrapFrame->SegCs & MODE_MASK) || (TrapFrame->EFlags & EFLAGS_V86_MASK))
> +    if (KiUserTrap(TrapFrame) || (TrapFrame->EFlags & EFLAGS_V86_MASK))
>  #else
>      if (TrapFrame->PreviousMode == UserMode)
>  #endif
> 
> 
Mark Jansen | 10 Apr 23:25 2016
Picon

ReactOS SVN Version Naming



This way of numbering seems very confusing to me, and I assume to other people as well..
When ReactOS presents itself as 0.5-SVN, I would expect this to be a 0.5 release, and not a 0.4 release that is working towards a 0.5.


regards,

Mark


PS: I wasn't subscribed at the time this was sent, so sending a 'fake' reply :)


Ged Murphy gedmurphy.maillists at gmail.com 
Mon Feb 29 16:07:49 UTC 2016Because that’s what is being worked towards now, and there will be an unknown number of point releases until it’s reached. It’s also a bit of nostalgia, it’s what we’ve always done :)
From: Ros-dev [mailto:ros-dev-bounces at reactos.org] On Behalf Of Hermès
BÉLUSCA - MAÏTO
Sent: 29 February 2016 16:00
To: ReactOS Development List <ros-dev at reactos.org>
Subject: [ros-dev] ReactOS SVN version naming Hi guys, I would like to understand what’s the rationale behind changing the ReactOS
trunk version from “0.4-SVN” to “0.5-SVN” (see revision 70818) whereas we
have just started to release ROS 0.4.0 only? Thanks in advance for your explanations! Cheers, Hermès.
_______________________________________________
Ros-dev mailing list
Ros-dev@...
http://www.reactos.org/mailman/listinfo/ros-dev

Gmane