Como urben mencionou o GSmartControl pode ser usado.
Se você for on-line e fizer o download de um iso do gparted ao vivo, poderá inicializá-lo e verificar o disco rígido inteiro dessa maneira. Eu faria assim, mas também veria informações de verificação do fornecedor / unidade inteligente.
Como alternativa, você pode usar o GSmartControl na parte do Linux do disco rígido e, no Windows, digitar em um prompt de comando:
chkdsk /f c:
O problema para mim em inicializar em cada sistema operacional é que não tenho certeza se isso vai chegar ao seu problema potencialmente real. Digo isso porque essas verificações não tocam em todas as partições como boot, efi e algumas outras, etc ...
Com o modelo do seu PC, ele pode vir com uma opção de tecla de atalho para entrar em um programa de diagnóstico do disco rígido. Esta é uma boa opção junto com a opção de inicialização ao vivo do gparted.
Entrar no BIOS e desativar o "boot rápido" se tiver essa opção pode ajudar. Embora, quando o seu Ubuntu está desligando e reinicializando, e então você obter as opções de inicialização e escolher o Windows e, em seguida, ele inicializa para o Windows como você disse, mas desligar o Windows e inicializar para o Ubuntu é onde você recebe os erros parece incomum para mim a menos a partição que você tem Ubuntu tem um setor ruim / áreas da unidade, ou há algum dano dos arquivos do sistema.
Eu não sou especialista, mas o grub é apenas um intermediário entre os dois sistemas operacionais do que eu entendo na forma mais simples. Eu apenas aponto para inicializar arquivos dependendo do sistema operacional que você escolher inicializar.
Se você acabar tendo que reinstalar o Ubuntu novamente, eu faria uma reformatação das partições do disco rígido novamente antes de reinstalá-lo. (Não sabe quais tipos de reinstalação você já tentou)