Strange Access Violation.

A user is receiving an access violation when they close the main form. I have tested this on 4 machines and can not recreate the AV, so created a version with a map file to trace the AV. The AV on this version mapped back to line 3985 in vcl.forms. This does not make any sense to me, Can anyone shed any light on this.
function TCustomForm.IsFormSizeStored: Boolean;
begin
  Result := AutoScroll or (HorzScrollBar.Range <> 0) or (VertScrollBar.Range <> 0); <-- AV line 3985 ???
end;
I am using Delphi XE5.
0
jon
1/26/2015 1:01:01 AM
embarcadero.delphi.vcl.using 2297 articles. 2 followers. Follow

18 Replies
2268 Views

Similar Articles

[PageSpeed] 30

jon hector wrote:

> A user is receiving an access violation when they close the main
> form. I have tested this on 4 machines and can not recreate the AV,
> so created a version with a map file to trace the AV. The AV on this
> version mapped back to line 3985 in vcl.forms. This does not make any
> sense to me, Can anyone shed any light on this.  function
> TCustomForm.IsFormSizeStored: Boolean; begin   Result := AutoScroll
> or (HorzScrollBar.Range <> 0) or (VertScrollBar.Range <> 0); <-- AV
> line 3985 ???  end; I am using Delphi XE5.

Have you taken the load offset into account when going from the AV
address to the map file address?

The error location you suspect does indeed not make any sense at all.
This is a routine the form would only call if you write it to a form
resource.



-- 
Peter Below (TeamB)
0
Peter
1/26/2015 6:49:35 PM
jon hector wrote:

> The AV on this version mapped back to line 3985 in vcl.forms. This
> does not make any sense to me,

Most likely the real culprit is deeper in call stack (and in your own
code most probably).

You can try using madExcept to get detailed call stack.

--
Alex
0
Alex
1/27/2015 1:01:01 AM
jon hector wrote:

> Hi Peter, Yes, I am at a loss. I believe I have done the calcs
> correctly, here they are.
> 
> Access Violation at Address 005EC0C7 
> Offset = (Image Base) 400000 + 1000 = 401000 
> Map file address = 005EC0C7 - 401000 = 1EB0C7. 

Yes, looks OK to me. Since you cannot reproduce the error there may be
something specific to the customer's machine involved. Can the customer
test the application on several PCs? If so that would be the next step,
IMO. Otherwise build a version of the program with better error
detection, following the advice of Alex Belo in his reply. AVs are
often raised at addresses that are far from the real cause of the
problem (which may be a corrupted call stack, for instance, due to a
memory overwrite error elsewhere in the code).



-- 
Peter Below (TeamB)
0
Peter
1/27/2015 1:01:01 AM
Hi,

Just a long shot... but are you typecasting a form? Usually some invalid typecast might end up in such collateral effect.
I was incorrectly typecasting a TField as TCurrencyField and accessing a TCurrencyField property that ended up giving access violation inside a FireDAC unit. Very hard to trace.

> function TCustomForm.IsFormSizeStored: Boolean;
> begin
>   Result := AutoScroll or (HorzScrollBar.Range <> 0) or (VertScrollBar.Range <> 0); <-- AV line 3985 ???
> end;
> I am using Delphi XE5.

HTH,
Clément
0
Clement
1/27/2015 1:01:01 AM
Hi Peter, Yes, I am at a loss. I believe I have done the calcs correctly, here they are.

Access Violation at Address 005EC0C7 
Offset = (Image Base) 400000 + 1000 = 401000 
Map file address = 005EC0C7 - 401000 = 1EB0C7. 

Detailed Map of Segments
 0001:001DFC48 00020244 C=CODE     S=.text    G=(none)   M=Vcl.Forms ACBP=A9  <---
 0001:001FFE8C 00000098 C=CODE     S=.text    G=(none)   M=Xml.XMLConst ACBP=A9

Publics by Value 
 0001:001EB0B8       Vcl.Forms.TCustomForm.IsFormSizeStored <---
 0001:001EB0E0       Vcl.Forms.TCustomForm.IsAutoScrollStored

Line numbers for VCL.Forms
  3985 0001:001EB0B8  3986 0001:001EB0DE  3989 0001:001EB0E0  3990 0001:001EB0E3 

> {quote:title=Peter Below wrote:}{quote}
> jon hector wrote:
> 
> > A user is receiving an access violation when they close the main
> > form. I have tested this on 4 machines and can not recreate the AV,
> > so created a version with a map file to trace the AV. The AV on this
> > version mapped back to line 3985 in vcl.forms. This does not make any
> > sense to me, Can anyone shed any light on this.  function
> > TCustomForm.IsFormSizeStored: Boolean; begin   Result := AutoScroll
> > or (HorzScrollBar.Range <> 0) or (VertScrollBar.Range <> 0); <-- AV
> > line 3985 ???  end; I am using Delphi XE5.
> 
> Have you taken the load offset into account when going from the AV
> address to the map file address?
> 
> The error location you suspect does indeed not make any sense at all.
> This is a routine the form would only call if you write it to a form
> resource.
> 
> 
> 
> -- 
> Peter Below (TeamB)
0
jon
1/27/2015 8:32:38 AM
Hi Alex, I thought it was supposed to do something like that but I got a winmail.dat file back. I found a converter to get the text file from it, but then I could find no "Viewer". All I had in Project was madExcept settings... I didn't look in Tools :) I might take another look at it because I am trying to figure out why I get a HTTP/1.1 505 HTTP Version Not Supported on an AWS upload (only on some machines-  others work fine) and was hoping madExcept might help. So thank you for point me in the right di
rection.

> {quote:title=Alex Belo wrote:}{quote}
> jon hector wrote:
> 
> > I was hoping it would, but it just gave me an AV address in Sytem
> > file, can't remember the line number but it was where it frees
> > objects if not nil, which would make sense. I couldn't find anything
> > pointing to the line in my code which caused the AV, but then the
> > documentation is not very good and it is possible I missed something.
> > I am sure madexcept is great if you have time to get to grips with
> > it. The video shows it going to a line in the user code but this is
> > when it can be run from the compiler and I do not get the AV on my
> > machines.
> 
> This is what madExcept does for you:
> - compile with madExcept enabled;
> - send exe to user;
> - user runs exe on his computer, gets AV and sends generated
> bugreport.txt to you;
> - you open report in IDE with Tools->madExcept->Viewer - and you can
> walk on call stack and see what line can cause the problem.
> 
> --
> Alex
0
jon
1/29/2015 1:01:01 AM
jon hector wrote:

> thank you for point me in the right direction.

OK, good luck.

You also can use madExcept forum: Mathias is very responsive, usually
users get his irrefragable answers quite quickly (if he is not on
vacation :)).

--
Alex
0
Alex
1/29/2015 1:01:01 AM
jon hector wrote:

> Thank you for the suggestions. Those were my thoughts as I had tested
> it on XP, Vista, Win7, Win8 machines from various manufacturers and
> it is fine. However, when I checked it occurs on three of my
> customers PC's. It has also been running fine on this customers
> machines previously when compiled in D5. This version is compiled in
> XE5, that is the only difference. I have found the offending code
> (listed below). I am assuming that the AV must be the result of the
> system trying to free memory that is no long er allocated. My only
> thoughts at this stage is to change the pchar for a char array to
> avoid using GetMem/FreeMem.

I see Achim found your error. This is a typical Ansi --> Unicode
conversion problem, you need to look closely at all places where you
use PChar or misuse strings as buffer for non-text data.



-- 
Peter Below (TeamB)
0
Peter
1/29/2015 1:01:01 AM
Hi Alex

Thank you for the suggestion. I tried MadExecpt, but it did not help.

> {quote:title=Alex Belo wrote:}{quote}
> jon hector wrote:
> 
> > The AV on this version mapped back to line 3985 in vcl.forms. This
> > does not make any sense to me,
> 
> Most likely the real culprit is deeper in call stack (and in your own
> code most probably).
> 
> You can try using madExcept to get detailed call stack.
> 
> --
> Alex
0
jon
1/29/2015 1:01:01 AM
Thank you for the suggestion Clement, but I am not.

> {quote:title=Clement Doss wrote:}{quote}
> Hi,
> 
> Just a long shot... but are you typecasting a form? Usually some invalid typecast might end up in such collateral effect.
> I was incorrectly typecasting a TField as TCurrencyField and accessing a TCurrencyField property that ended up giving access violation inside a FireDAC unit. Very hard to trace.
> 
> > function TCustomForm.IsFormSizeStored: Boolean;
> > begin
> >   Result := AutoScroll or (HorzScrollBar.Range <> 0) or (VertScrollBar.Range <> 0); <-- AV line 3985 ???
> > end;
> > I am using Delphi XE5.
> 
> HTH,
> Clément
0
jon
1/29/2015 1:01:01 AM
Thank you for the suggestions. Those were my thoughts as I had tested it on XP, Vista, Win7, Win8 machines from various manufacturers and it is fine. However, when I checked it occurs on three of my customers PC's. It has also been running fine on this customers machines previously when compiled in D5. This version is compiled in XE5, that is the only difference. I have found the offending code (listed below). I am assuming that the AV must be the result of the system trying to free memory that is no long
er allocated. My only thoughts at this stage is to change the pchar for a char array to avoid using GetMem/FreeMem.

function Get_Computer_Name: String;
Var
  Buffer : PChar;
  CharSize: Cardinal;
Begin
   CharSize := MAX_COMPUTERNAME_LENGTH + 1;
   GetMem(Buffer, CharSize);
   try
     try
        GetComputerName(Buffer, CharSize);
        Result := String(Buffer);
     except
        Result := '';
     end;
   finally
      FreeMem(Buffer);
   end;
end;

> {quote:title=Peter Below wrote:}{quote}
> jon hector wrote:
> 
> > Hi Peter, Yes, I am at a loss. I believe I have done the calcs
> > correctly, here they are.
> > 
> > Access Violation at Address 005EC0C7 
> > Offset = (Image Base) 400000 + 1000 = 401000 
> > Map file address = 005EC0C7 - 401000 = 1EB0C7. 
> 
> Yes, looks OK to me. Since you cannot reproduce the error there may be
> something specific to the customer's machine involved. Can the customer
> test the application on several PCs? If so that would be the next step,
> IMO. Otherwise build a version of the program with better error
> detection, following the advice of Alex Belo in his reply. AVs are
> often raised at addresses that are far from the real cause of the
> problem (which may be a corrupted call stack, for instance, due to a
> memory overwrite error elsewhere in the code).
> 
> 
> 
> -- 
> Peter Below (TeamB)
0
jon
1/29/2015 1:01:01 AM
Hello,

Am 29.01.2015 um 09:13 schrieb jon hector:

> Thank you for the suggestions. Those were my thoughts as I had tested it on XP, Vista, Win7, Win8 machines from various manufacturers and it is fine. However, when I checked it occurs on three of my customers PC's. It has also been running fine on this customers machines previously when compiled in D5. This version is compiled in XE5, that is the only difference. I have found the offending code (listed below). I am assuming that the AV must be the result of the system trying to free memory that is no lo
ng
> er allocated. My only thoughts at this stage is to change the pchar for a char array to avoid using GetMem/FreeMem.
>
> function Get_Computer_Name: String;
> Var
>    Buffer : PChar;
>    CharSize: Cardinal;
> Begin
>     CharSize := MAX_COMPUTERNAME_LENGTH + 1;
>     GetMem(Buffer, CharSize);
>     try
>       try
>          GetComputerName(Buffer, CharSize);
>          Result := String(Buffer);
>       except
>          Result := '';
>       end;
>     finally
>        FreeMem(Buffer);
>     end;
> end;

GetMem expects the size parameter in Bytes, but you are calculating 
Chars. Since SizeOf(Char)==2 in Unicode you need to adjust the GetMem() 
call to

   GetMem(Buffer, CharSize * SizeOf(Char));

However, GetComputerName() expects the number of chars, so this call is 
correct in your code.

You can avoid GetMem/FreeMem at all by using a local buffer:

function Get_Computer_Name: string;
var
   Buffer : array[0..MAX_COMPUTERNAME_LENGTH];
   nSize  : Cardinal;
begin
   nSize := MAX_COMPUTERNAME_LENGTH;
   if Windows.GetComputerName(Buffer, nSize) then
   begin
     Result := String(Buffer);
     SetLength(Result, nSize);
   end
   else
     Result := '';
end;

HTH
Achim
0
Achim
1/29/2015 1:01:01 AM
Typing error:

Am 29.01.2015 um 10:03 schrieb Achim Kalwa:
> function Get_Computer_Name: string;
> var
>     Buffer : array[0..MAX_COMPUTERNAME_LENGTH];

that should be:

var
    Buffer : array[0..MAX_COMPUTERNAME_LENGTH] of Char;



Achim
0
Achim
1/29/2015 1:01:01 AM
jon hector wrote:

> I tried MadExecpt, but it did not help.

If your problem is as Achim described madExcept with "istantly crash on
buffer overrun" option should show you the exact wrong line in your
code. ;-)

--
Alex
0
Alex
1/29/2015 1:01:01 AM
I was hoping it would, but it just gave me an AV address in Sytem file, can't remember the line number but it was where it frees objects if not nil, which would make sense. I couldn't find anything pointing to the line in my code which caused the AV, but then the documentation is not very good and it is possible I missed something. I am sure madexcept is great if you have time to get to grips with it. The video shows it going to a line in the user code but this is when it can be run from the compiler and 
I do not get the AV on my machines.

> {quote:title=Alex Belo wrote:}{quote}
> jon hector wrote:
> 
> > I tried MadExecpt, but it did not help.
> 
> If your problem is as Achim described madExcept with "istantly crash on
> buffer overrun" option should show you the exact wrong line in your
> code. ;-)
> 
> --
> Alex
0
jon
1/29/2015 1:01:01 AM
Thank Achim, I do remember seeing that when I read up on unicode conversion (now you mention it). I'll have to go though and check the rest of my code. Thank You.

> {quote:title=Achim Kalwa wrote:}{quote}
> Hello,
> 
> Am 29.01.2015 um 09:13 schrieb jon hector:
> 
> > Thank you for the suggestions. Those were my thoughts as I had tested it on XP, Vista, Win7, Win8 machines from various manufacturers and it is fine. However, when I checked it occurs on three of my customers PC's. It has also been running fine on this customers machines previously when compiled in D5. This version is compiled in XE5, that is the only difference. I have found the offending code (listed below). I am assuming that the AV must be the result of the system trying to free memory that is no 
long
> > er allocated. My only thoughts at this stage is to change the pchar for a char array to avoid using GetMem/FreeMem.
> >
> > function Get_Computer_Name: String;
> > Var
> >    Buffer : PChar;
> >    CharSize: Cardinal;
> > Begin
> >     CharSize := MAX_COMPUTERNAME_LENGTH + 1;
> >     GetMem(Buffer, CharSize);
> >     try
> >       try
> >          GetComputerName(Buffer, CharSize);
> >          Result := String(Buffer);
> >       except
> >          Result := '';
> >       end;
> >     finally
> >        FreeMem(Buffer);
> >     end;
> > end;
> 
> GetMem expects the size parameter in Bytes, but you are calculating 
> Chars. Since SizeOf(Char)==2 in Unicode you need to adjust the GetMem() 
> call to
> 
>    GetMem(Buffer, CharSize * SizeOf(Char));
> 
> However, GetComputerName() expects the number of chars, so this call is 
> correct in your code.
> 
> You can avoid GetMem/FreeMem at all by using a local buffer:
> 
> function Get_Computer_Name: string;
> var
>    Buffer : array[0..MAX_COMPUTERNAME_LENGTH];
>    nSize  : Cardinal;
> begin
>    nSize := MAX_COMPUTERNAME_LENGTH;
>    if Windows.GetComputerName(Buffer, nSize) then
>    begin
>      Result := String(Buffer);
>      SetLength(Result, nSize);
>    end
>    else
>      Result := '';
> end;
> 
> HTH
> Achim
0
jon
1/29/2015 12:24:58 PM
jon hector wrote:

> I was hoping it would, but it just gave me an AV address in Sytem
> file, can't remember the line number but it was where it frees
> objects if not nil, which would make sense. I couldn't find anything
> pointing to the line in my code which caused the AV, but then the
> documentation is not very good and it is possible I missed something.
> I am sure madexcept is great if you have time to get to grips with
> it. The video shows it going to a line in the user code but this is
> when it can be run from the compiler and I do not get the AV on my
> machines.

This is what madExcept does for you:
- compile with madExcept enabled;
- send exe to user;
- user runs exe on his computer, gets AV and sends generated
bugreport.txt to you;
- you open report in IDE with Tools->madExcept->Viewer - and you can
walk on call stack and see what line can cause the problem.

--
Alex
0
Alex
1/29/2015 12:26:44 PM
Achim wrote:

> Result := String(Buffer);
> SetLength(Result, nSize);

You should use SetString() instead:

{code}
SetString(Result, Buffer, nSize);
{code}

-- 
Remy Lebeau (TeamB)
0
Remy
1/29/2015 6:35:28 PM
Reply:

Similar Artilces:

Access Violation Delphi XE7 using IBSQL or IB
Hi, I'm getting an access violation opening a TIBSQL or TIBQuery after upgrading my project to XE 7. The error is being raised in procedure TIBSQL.Prepare and is happening on the following line: bt := Database.Encoding.GetBytes(FProcessedSQL.Text + #0); I'm guessing there's a new property added to one of the IBX components that's not being set. Any ideas? Thanks, Dan Palley Dan Palley wrote: > Hi, I'm getting an access violation opening a TIBSQL or TIBQuery after upgrading my project to XE 7. The error is being raised in procedure TIBSQL.Prepare...

Use of TBCDField in Aggregate causes access violation in Delphi XE7
I have just converted my application from Delphi 7 to Delphi XE7. To get the application to compile clean was surprisingly easy. However, I am now getting access violations in a number of areas. I have narrowed down the problem to the use of a TBCDField in a aggregate of a ClientDataset. The back end of my application is SQL Server 2008 R2. There are a number of fields in the database with a datatype of 'money'. When you bring in a SQL Server DataType of Money into a dataset (query or clientdataset) Delphi assigns the field a datatype of TBCDField. When I use a field with a ...

Use of TBCDField in Aggregate causes access violation in Delphi XE7
I have just converted my application from Delphi 7 to Delphi XE7. To get the application to compile clean was surprisingly easy. However, I am now getting access violations in a number of areas. I have narrowed down the problem to the use of a TBCDField in a aggregate of a ClientDataset. The back end of my application is SQL Server 2008 R2. There are a number of fields in the database with a datatype of 'money'. When you bring in a SQL Server DataType of Money into a dataset (query or clientdataset) Delphi assigns the field a datatype of TBCDField. When I use a field with a ...

To use or not to use Delphi
Sadly, it seems to me that there is a sort of race between the two threads, for and against using Delphi in new projects, with more or less the same users posting in both threads. Arguments are fiercely debated in both camps. Borland had their own vision. As a community, now that Delphi has changed ownership I believe we should try to be more consistent, more clear, and more articulate in what we expect from Embercadero in terms of Delphi. We can contribute to keeping Delphi alive and moving in the right direction. "Laurent Cocea" schrieb: > Sadly, it seems to me that there ...

Using DLL -- Access Violation
HI everyone, i don't know where to post this problem so I put it here because it deals with a DLL that connects to a web service. I'm writing a DLL that connects to a webService and that implements some business logic with the data it captures from the web service. This DLL has to be used by other languages. The problem I have is that when I try to use the DLL with other languages I get an access violation. I'm writing the DLL with Delphi 2009 Professional Edition and I try to use the DLL with a program writed in Delphi 6 professional. Why when I try to call a function from ...

Strange Access Violation on FormShow
Hi All, I have a really strange problem, and I'm hoping someone may be able to help me out. I'm using D5. I have an MDI app, with an MDIChild form showing. On that form, there is a dbgrid pointing to a table in a datamodule. The table is open. There is a button on that form which opens another form that allows the user to edit the current record. It has some data aware components on it, and points to the same table that the grid is pointing to. When a user clicks on the button the first time, the form launches fine. If you click on the button a second time, it throws an AV....

Access Violation using Snapshot
After I upgraded to ZfD 4 SP1b/4.0.1 Interim Release 6, I get "Access violation at address 1000B64B. Read of address 00000000" What's the fix for it? Thanks. Is your registry size over 20Megs? There have been issues with this. Supposedly it is resolved with ZFD6.5 but I am unsure about ZFD4. If you have over a 20 Meg registry size I can research for you. Normally, however, a 20 Meg registry size indicates a "non-clean" machine and snapshots should be taken on a clean machine. -- Craig Wilson Novell Product Support Forum Sysop Master CNE, MCSE ...

Delphi 2010 Access Violation
I have an application developed with delphi 2010 professional. Are there any tools in the IDE that will help me find an access violation that shows up, when the application closes? I have steppd through the code,but can' t locate anything. I am not for sure but I think a form may not be destroyed. TIA Jan B wrote: > I have an application developed with delphi 2010 professional. Are > there any tools in the IDE that will help me find an access violation > that shows up, when the application closes? I have steppd through > the code,but can' t locate anything. ...

Random Access Violation in VCL
Hello, I get this access violation randomly when using a C++ VCL forms application, it happens when submitting data in the application. It will work most of the time than randomly fail for the same operations. This happens since the application was upgrade to XE2, then XE5 (both have the same issue) from a very old version of C++ builder (I think version 3). I have a stack trace done with EurekaLog but there is no pointer to the application source code in it. Any idea what might cause this? EurekaLog 7.0.6.68 RC 10 Exception: -------------------------------------------------...

Access Violation When Starting Delphi
Irregularly, when starting the D7 IDE with still nothing but the D7 splash screen showing, I get 'Access Violation in vcl70.bpl' followed by the message 'Error reading EditWindow.Icon.Data. The window does not have scroll bars.' At the moment, I am working on a single project so always open the same one. I have zero 3rd party components registered in D7. What to make out of this? Thank you for your comments. Andreas Hi! Try starting your project with -np switch. Delphi will open with no project. > Vincent Bergeron wrote: > Try starting your project...

Strange Access Violation (LONG)
I have been looking at a problem in my customer�s app for about 2 weeks know that is driving me absolutely nuts. When the runtime version of the application is ran, random access violations will occur. I have been able to isolate one of these access violations to the point I can easily reproduce it and started to tear it apart. The first thing I did was a /pbdebug to find out exactly where it was crashing. Here is a snippet of the dbg file: End class function +CREATE for class W_VEHICLE_STATUS, lib entry W_VEHICLE_STATUS Executing object function +CREATE for clas...

Access violation when using DLL
I have a DLL to control a mobil printer but I get an access violation on FreeLibrary (nothing gets printed). The debugger stops here in the Controls unit. function DoControlMsg(ControlHandle: HWnd; var Message): Boolean; var Control: TWinControl; begin DoControlMsg := False; Control := FindControl(ControlHandle); if Control <> nil then with TMessage(Message) do begin Result := Control.Perform(Msg + CN_BASE, WParam, LParam); DoControlMsg := True; end; end; Here is the code: Var Bixolon: Thandle; PrinterOpen: function(strOutPortName: PW...

Vcl objects access violation.. Why?
*Hello, everybody.* *I need a piece of advice.* *So, I have an VCL application. * {code} //--------------------------------------------------------------------------- #ifndef RecViewerH #define RecViewerH //--------------------------------------------------------------------------- #include <System.Classes.hpp> #include <Vcl.Controls.hpp> #include <Vcl.StdCtrls.hpp> #include <Vcl.Forms.hpp> #include <Vcl.Grids.hpp> #include "../../Graphics/GraphicsBase.hpp" #include "../../Graphics/SegTExt.hpp" #include "../../CBuilder/E...

Finding access violation using D2009
Hi All I am getting an intermittant AV in my app. It gives me an AV at 004EFBF in Pet.exe(my app). How do I locate the code causing the error using D2009? I cannot find a search screen for finding errors. Thanks Godfrey Godfrey Fletcher a écrit : > I am getting an intermittant AV in my app. It gives me an AV at 004EFBF in > Pet.exe(my app). > How do I locate the code causing the error using D2009? I cannot find a > search screen > for finding errors. There is no screen for finding errors like AVs, which tend to get caused by wrong coding; it...

Web resources about - Strange Access Violation. - embarcadero.delphi.vcl.using

CP violation - Wikipedia, the free encyclopedia
In particle physics , CP violation (CP standing for Charge Parity ) is a violation of the postulated CP-symmetry (or Charge conjugation Parity ...

Microsoft Attacks Google for Privacy violations - Flickr - Photo Sharing!
Explore MichalSpocko's photos on Flickr. MichalSpocko has uploaded 24 photos to Flickr.

Rep. Luis V. Gutierrez Denounces Civil Rights Violations in Puerto Rico - YouTube
February 16, 2011 - Rep. Luis V. Gutierrez (IL-4) spoke out against the Puerto Rican government's campaign to silence student protestors and ...

Gul defies Erdogan’s Twitter ban and calls move ‘violation of rights’
The content of Abdullah Gul’s message – and the way it was delivered – is a message to Recep Tayyip Erdogan’s religiously conservative government, ...

Russia closes 12 McDonald's restaurants over hygiene violations
Russia has temporarily closed 12 branches of McDonald's on health grounds and is carrying out more than 100 inspections, the US fast food chain ...

William sees red over second paparazzi violation
William sees red over second paparazzi violation

Report alleges labour violations at Apple supplier in China
Report claims dangerous conditions, labour violations at another Apple plant.

'Violation and betrayal': Low pay offer hurt ADF's fighting edge, say ADFA academics
Miserly pay approach potential threat to 'operational success', academics argue.

Nick Kyrgios issued code violation at Japan Open - The Courier-Mail Search Search
NICK Kyrgios has hit out at the Australian media following his loss to Frenchman Benoit Paire at the Japan Open on the weekend.

Nick Kyrgios issued code violation at Japan Open
NICK Kyrgios has hit out at the Australian media following his loss to Frenchman Benoit Paire at the Japan Open on the weekend.

Resources last updated: 1/22/2016 4:13:41 AM